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 弹出层插件实现代码
Oct 24 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
jquery链式操作的正确使用方法
Jan 06 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
详解javascript中原始数据类型Null和Undefined
Dec 17 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
angular异步验证防抖踩坑实录
Dec 01 Javascript
Vue使用轮询定时发送请求代码
Aug 10 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生成月历代码
2007/06/14 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
python矩阵转换为一维数组的实例
2018/06/05 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Django之模板层的实现代码
2019/09/09 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
金讯Java笔试题目
2013/06/18 面试题
玄武湖导游词
2015/02/05 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
中学教代会开幕词
2016/03/04 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis