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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
form中限制文本字节数js代码
Jun 10 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
Mar 16 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
JS倒计时两种实现方式代码实例
Jul 27 Javascript
javascript this指向相关问题及改变方法
Nov 19 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
php 表单验证实现代码
2009/03/10 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
php跨域调用json的例子
2013/11/13 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
js module大战
2019/04/19 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
wxPython实现整点报时
2019/11/18 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
普通院校学生的自荐信
2013/11/27 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
青年志愿者活动总结
2014/04/26 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
小学运动会加油稿
2015/07/22 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers