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 相关文章推荐
如何实现动态删除javascript函数
May 27 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
jsonp原理及使用
Oct 28 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
Aug 22 Javascript
JavaScript代码调试方法实例小结
Jan 05 Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 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缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
Python装饰器基础详解
2016/03/09 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
一份python入门应该看的学习资料
2018/04/11 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
结束运行python的方法
2020/06/16 Python
Python 如何测试文件是否存在
2020/07/31 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
文史专业毕业生自荐信
2013/11/17 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
活动宣传策划方案
2014/05/23 职场文书
工程承包协议书范本
2014/09/29 职场文书
公司董事任命书
2015/09/21 职场文书
师德培训心得体会2016
2016/01/09 职场文书
2019公司管理制度
2019/04/19 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript