2015-12-15 181 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);