js实现一个页面多个倒计时的3种方法

2019-11-13,,

本文实例为大家分享了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持北冥有鱼。

您可能感兴趣的文章:

  • 使用nginx同域名下部署多个vue项目并使用反向代理的方法
  • Vue动态组件与异步组件实例详解
  • Vue.js实现开发购物车功能的方法详解
  • vue组件之间通信方式实例总结【8种方式】
  • JS判断两个数组或对象是否相同的方法示例
  • jQuery.parseJSON()函数详解
  • js获取form表单中name属性的值
  • Python常用的json标准库
  • 基于node.js实现爬虫的讲解
  • VUE引入第三方js包及调用方法讲解

《js实现一个页面多个倒计时的3种方法.doc》

下载本文的Word格式文档,以方便收藏与打印。