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 Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
JavaScript汉诺塔问题解决方法
Apr 21 Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 Javascript
BootStrap中的表单大全
Sep 07 Javascript
jQuery+json实现动态创建复杂表格table的方法
Oct 25 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
vue2实现数据请求显示loading图
Nov 28 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 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
example1.php
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php安装swoole扩展的方法
2015/03/19 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
Smarty3配置及入门语法
2017/02/22 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
jquery中的过滤操作详细解析
2013/12/02 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python csv文件记录流程代码解析
2020/07/16 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
教师新年寄语
2014/04/03 职场文书
革命电影观后感
2015/06/18 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
详细介绍python类及类的用法
2021/05/31 Python