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 相关文章推荐
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
Jan 07 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
微信小程序修改数组长度的问题的解决
Dec 17 Javascript
JS数组方法concat()用法实例分析
Jan 18 Javascript
js实现踩五彩块游戏
Feb 08 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 Javascript
Javascript组合继承方法代码实例解析
Apr 02 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
jquery中radio checked问题
2015/03/16 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python中List.count()方法的使用教程
2015/05/20 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
销售工作岗位职责
2013/12/24 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
招聘专员岗位职责
2014/03/07 职场文书
产品推广策划方案
2014/05/10 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS
Go语言怎么使用变长参数函数
2022/07/15 Golang