js实现一个页面多个倒计时的3种方法


Posted in Javascript onFebruary 25, 2019

本文实例为大家分享了js实现一个页面多个倒计时的具体代码,供大家参考,具体内容如下

说明: 方法1, 方法二是基础原理版,方法三升级版(参考for循环,定时器,闭包混合一块的那点事。)

方法一:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>倒计时</title>
</head>
<body> 
 
 <div id="timer1" style="color:red"></div> 
 <div id="timer2" style="color:red"></div> 

</body> 
<script> 
 function countDown( maxtime,fn ) {  
  var timer = setInterval(function() { 
    if( !!maxtime ){  
     var day = Math.floor(maxtime / 86400),
     hour = Math.floor((maxtime % 86400) / 3600),
    minutes = Math.floor((maxtime % 3600) / 60), 
    seconds = Math.floor(maxtime%60), 
    msg = "距离结束还有"+day+"天"+hour+"时"+minutes+"分"+seconds+"秒";  
    fn( msg ); 
    --maxtime;  
   } else {  
    clearInterval( timer ); 
    fn("时间到,结束!"); 
   }  
  }, 1000); 
 } 
 countDown( 86,function( msg ) { 
  document.getElementById('timer1').innerHTML = msg; 
 }) 
 countDown( 86400,function( msg ) { 
  document.getElementById('timer2').innerHTML = msg; 
 }) 
</script> 
</html>

方法二:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>倒计时</title>
</head>
<body> 
 <div id="timer1"></div> 
 <div id="timer2"></div> 
 <div id="timer3"></div> 
</body> 
<script type="text/javascript"> 
 
 var addTimer = function () { 
  var list = [], 
   interval; 
 
  return function (id, time) { 
   if (!interval) 
    interval = setInterval(go, 1000); 
   list.push({ ele: document.getElementById(id), time: time }); 
  } 
 
  function go() { 
   for (var i = 0; i < list.length; i++) { 
    list[i].ele.innerHTML = getTimerString(list[i].time ? list[i].time -= 1 : 0); 
    if (!list[i].time) 
     list.splice(i--, 1); 
   } 
  } 
 
  function getTimerString(time) { 
   var not0 = !!time, 
    d = Math.floor(time / 86400), 
    h = Math.floor((time %= 86400) / 3600), 
    m = Math.floor((time %= 3600) / 60), 
    s = time % 60; 
   if (not0) 
    return "还有" + d + "天" + h + "小时" + m + "分" + s + "秒"; 
   else return "时间到"; 
  } 
 } (); 
 
 addTimer("timer1", 12); 
 addTimer("timer2", 10); 
 addTimer("timer3", 13); 
</script> 
</html>

方法三:  

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>倒计时</title>
</head>
<body> 
 
 <div id="timer0" style="color:red"></div> 
 <div id="timer1" style="color:red"></div> 
 <div id="timer2" style="color:red"></div>
</body> 
<script> 
 function countDown( maxtime,fn ) {  
  var timer = setInterval(function() { 
    if( !!maxtime ){  
     var day = Math.floor(maxtime / 86400),
     hour = Math.floor((maxtime % 86400) / 3600),
    minutes = Math.floor((maxtime % 3600) / 60), 
    seconds = Math.floor(maxtime%60), 
    msg = "距离结束还有"+day+"天"+hour+"时"+minutes+"分"+seconds+"秒";  
    fn( msg ); 
    --maxtime;  
   } else {  
    clearInterval( timer ); 
    fn("时间到,结束!"); 
   }  
  }, 1000); 
 } 
 var aTime = [3600,3800,3900];
 for ( var i = 0; i < 3; i++ ) {
  (function (i) {
   var obj = 'timer' + i;
   countDown( aTime[i],function( msg ) { 
    document.getElementById(obj).innerHTML = msg; 
   }) 
  })(i)
 }
  
 
</script> 
</html>

更多关于倒计时的文章请查看专题:《倒计时功能》

更多JavaScript时钟特效点击查看:JavaScript时钟特效专题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用htc组件制作windows选项卡
Jan 13 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
Feb 04 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
详解JavaScript逻辑And运算符
Dec 04 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
vue非父子组件通信问题及解决方法
Jun 11 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
node crawler如何添加promise支持
Feb 01 Javascript
如何利用node转发请求详解
Sep 17 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 #Javascript
写一个Vue Popup组件
Feb 25 #Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 #Javascript
JavaScript中构造函数与原型链之间的关系详解
Feb 25 #Javascript
JavaScript中的事件与异常捕获详析
Feb 24 #Javascript
Vue 组件注册实例详解
Feb 23 #Javascript
Vue Prop属性功能与用法实例详解
Feb 23 #Javascript
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
前厅部经理岗位职责范文
2014/02/04 职场文书
文明演讲稿范文
2014/05/12 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS