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 相关文章推荐
类之Prototype.js学习
Jun 13 Javascript
jquery ajax修改全局变量示例代码
Nov 08 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
JavaScript实现缓动动画
Nov 25 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
基于mysql的bbs设计(四)
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
Javascript的闭包
2009/12/31 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JS实现复制功能
2017/03/01 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
python实现按首字母分类查找功能
2019/10/31 Python
Python执行时间的几种计算方法
2020/07/31 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
英文翻译的自我评价语句
2013/10/04 职场文书
文化宣传方案
2014/03/13 职场文书
体育教师求职信
2014/05/24 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
车间主任岗位职责
2015/02/03 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
高一军训口号
2015/12/25 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang