2015-12-15 123 views
0

我遇到了我的计时器问题。我想要做的是当倒数计时点击“0天0小时0分0秒”时,我希望它在0时停在那里,而不显示像“-1天18小时12分57秒”。有没有人有这样的经验吗?停止我的Javascript日期倒计时

我想我的“if”语句有问题停止倒计时。下面是代码的样子:

<script> 
    function getTimeRemaining(endtime) { 
     var t = Date.parse(endtime) - Date.parse(new Date()); 
     var seconds = Math.floor((t/1000) % 60); 
     var minutes = Math.floor((t/1000/60) % 60); 
     var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
     var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
     return { 
      'total': t, 
      'days': days, 
      'hours': hours, 
      'minutes': minutes, 
      'seconds': seconds 
     }; 
    } 

    function initializeClock(id, endtime) { 
     var clock = document.getElementById(id); 
     var daysSpan = clock.querySelector('.days'); 
     var hoursSpan = clock.querySelector('.hours'); 
     var minutesSpan = clock.querySelector('.minutes'); 
     var secondsSpan = clock.querySelector('.seconds'); 

     function updateClock() { 
      var t = getTimeRemaining(endtime); 

      daysSpan.innerHTML = t.days; 
      hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
      minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
      secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 

      if (t.total <= 0) { 
       clearInterval(timeinterval); 
      } 
     } 

     updateClock(); 
     var timeinterval = setInterval(updateClock, 1000); 
    } 

    var deadline = 'December 16 2015 13:00:00 UTC-0800'; 
    initializeClock('clockdiv', deadline); 
</script> 

回答

0

我会尝试这样的:

var timeinterval; 

function updateClock() { 
     var t = getTimeRemaining(endtime); 

     if (t.total <= 0) { 
      clearInterval(timeinterval); 
     }else{ 
      daysSpan.innerHTML = t.days; 
      hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
      minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
      secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 
     } 

    } 
    updateClock(); 
    timeinterval = setInterval(updateClock, 1000);