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 相关文章推荐
更换select下拉菜单背景样式的实现代码
Dec 20 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
JavaScript中操作字符串小结
May 04 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
学好js,这些js函数概念一定要知道【推荐】
Jan 19 Javascript
在小程序中使用canvas的方法示例
Sep 17 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
python 队列详解及实例代码
2016/10/18 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
会计实习期自我鉴定
2013/10/06 职场文书
中学教师岗位职责
2013/11/26 职场文书
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
高中运动会广播稿
2014/01/21 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
个人廉洁自律总结
2015/03/06 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
国情备忘录观后感
2015/06/04 职场文书
python之基数排序的实现
2021/07/26 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL