2012-12-20 31 views
1

我有一個問題:當我做一個倒計時在JavaScript中,我有以下形式的函數:定時在JavaScript VS實時

 <script> 
var interval; 
var minutes = 1; 
var seconds = 5; 
window.onload = function() { 
    countdown('countdown'); 
} 

function countdown(element) { 
    interval = setInterval(function() { 
     var el = document.getElementById(element); 
     if(seconds == 0) { 
      if(minutes == 0) { 
       el.innerHTML = "countdown's over!";      
       clearInterval(interval); 
       return; 
      } else { 
       minutes--; 
       seconds = 60; 
      } 
     } 
     if(minutes > 0) { 
      var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute'); 
     } else { 
      var minute_text = ''; 
     } 
     var second_text = seconds > 1 ? 'seconds' : 'second'; 
     el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining'; 
     seconds--; 
    }, 1000); 
} 
</script> 

功能的每一個性能之間的時間正好是1秒。或者由於執行主體功能而導致時間延遲?

+2

'countdown'是獲得更好的精度不是核心JS功能。這是來自某個圖書館嗎? – Dancrumb

+0

好像你留下了一條線。也許你試圖調用'setInterval'? – benekastah

+0

你是代碼是一個什麼都不做的函數。有沒有在那裏創建一個計時器? – dqhendricks

回答

1

沒有,setTimeout()setInterval()有impredictable的準確性,如this other question說,你可以通過設置超時一次,也比使用(new Date()).milliseconds做一次相關的行動,而不是使用setTimeout()的每一件事情

0

但是也有一些說叫fnc至少delay MS功能setTimeout(fnc, delay)setTimeout(fnc, delay)。詳情請參閱MDN