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的loading效果实现代码
Nov 05 Javascript
Javascript变量作用域详解
Dec 06 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
js转html实体的方法
Sep 27 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
JavaScript创建、读取和删除cookie
Sep 03 Javascript
JS中的const命令你真懂它吗
Mar 08 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/03/03 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
javascript 闭包详解
2015/02/15 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
详解Vue的异步更新实现原理
2020/12/22 Vue.js
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
工作收入证明模板
2014/10/10 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
python入门学习关于for else的特殊特性讲解
2021/11/20 Python