如何使用 Javascript 在同一页面中创建多个倒数计时器?

How To Create Multiple CountDown Timers In The Same Page Using Javascript?

提问人:Born2DoubleUp 提问时间:9/15/2019 最后编辑:AllJsBorn2DoubleUp 更新时间:9/15/2019 访问量:1094

问:

我一直在尝试让这段代码成功工作,但没有任何运气。我正在尝试创建一个 javascript 函数,该函数将在同一页面上倒计时多个日期。我的 JavaScript 函数如下:

 <script>
   function getTimeRemaining(endtime){
     var deadline = new Date(endtime).getTime(); 
     var x = setInterval(function() { 
       var now = Math.floor(Date.now() / 1000); 
       var t = deadline - now; 
       var days = Math.floor(t / (1000 * 60 * 60 * 24)); 
       var hours = Math.floor((t % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
       var minutes = Math.floor((t % (1000 * 60 * 60)) / (1000 * 60)); 
       var seconds = Math.floor((t % (1000 * 60)) / 1000); 
       document.getElementById("trip_" + endtime).innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s"; 
       if (t < 0) { 
           clearInterval(x); 
           document.getElementById("trip_" + endtime).innerHTML = "expired"; 
       } 
     }, 1);
   }
 </script>

结束时间以 UNIX 时间戳的形式提供。如果时间已过,它会正确显示。但是,如果时间剩余,它会显示 0d0h0m0s,没有任何更新。只是为了好玩,我在倒计时的末尾添加了 t 变量,它会倒计时剩余的秒数,但不会在倒计时本身上显示它。我猜我的天、小时、分钟和秒变量有问题。我没有使用毫秒,我认为我使用的数学是假设我这样做。有谁知道我能做些什么来解决我的问题?我不精通javascript。提前致谢!

JavaScript HTML

评论

0赞 Mulan 9/15/2019
我想你会发现这个和这个很有帮助。

答:

1赞 mscdeveloper 9/15/2019 #1

也许是这样的:

function TimeRemaining(){
   var els = document.querySelectorAll('[id^="trip_"]');
   for (var i=0; i<els.length; i++) {
   	 var el_id = els[i].getAttribute('id');
   	 var end_time = el_id.split('_')[1];
   	 var deadline = new Date(end_time);
     var now = new Date();
     var t = Math.floor(deadline.getTime() - now.getTime());
     var days = Math.floor(t / (1000 * 60 * 60 * 24));
     var hours = Math.floor((t % (1000 * 60 * 60 * 24))/(1000 * 60 * 60));
     var minutes = Math.floor((t % (1000 * 60 * 60)) / (1000 * 60));
     var seconds = Math.floor((t % (1000 * 60)) / 1000);
     if (t < 0) {
        document.getElementById("trip_" + end_time).innerHTML = 'EXPIRED';
     }else{
     	document.getElementById("trip_" + end_time).innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s";
     }
   }
}

function StartTimeRemaining(){
    TimeRemaining();
	setInterval(function(){
		TimeRemaining();
	}, 1000)
}


StartTimeRemaining();
<div id="trip_2019-12-31"></div>
<div id="trip_2019-11-01 01:02:12"></div>
 <div id="trip_2019-01-01"></div>