2014-12-03 43 views
-1

我做在JavaScript中的計時器,它已經工作得很好,唯一的問題是,當我不停的按 「開始」按鈕,它使堆疊計數功能和意志以更高和更高的速度計數。嘗試了多種方式來阻止它,但無法管理自己。按鈕點擊不應該將其疊觸發功能,但它確實

JS:

var startknop = document.getElementById("start"); 
var stopknop = document.getElementById("stop"); 
var hour = 0; 
var min = 0; 
var sec = 0; 
startknop.onclick = function() 
{ 
     intervalId = setInterval(count, 1000); 
} 
stopknop.onclick = function() 
{ 
    clearInterval(intervalId); 

} 

    counter.innerHTML = hour + "0:" + min + "0:" + sec + "0"; 

    function count() { 

     sec++; 
     if(sec <= 9) 
     { 
      var seco = "0" + sec; 
     } 
     else 
     { 
      seco = sec; 
     } 
     if(min <= 9) 
     { 
      var mino = "0" + min; 

     } 
     else 
     { 
      mino = sec; 
     } 
     if(hour <= 9) 
     { 
      var houro = "0" + hour; 
     } 
     else 
     { 
      houro = hour; 
     } 
     if(sec == 60){ 
      sec = 0; 
      min += 1; 
     } 
     if(min == 60){ 
      min = 0; 
      hour += 1; 
     } 
    counter.innerHTML = houro + ":" + mino + ":" + seco; 
} 

回答

0
var running = false; 
startknop.onclick = function() 
{ 
    if(!running) 
    { 
     running=true; 
     intervalId = setInterval(count, 1000); 
    } 
} 

當計時器完成時設置運行false。

+0

這主要奮力只需要添加'開始= FALSE;'(改變了var開始)其他按鈕感謝的人! – JustinDD 2014-12-03 08:34:29

0

包裹的setInterval在if塊用布爾判斷是否初始化。您正在啓動多個定時器,因此只停止分配給您的全局變量的最後一個定時器。您也可以將intervalId設置爲-1,並檢查它是否大於0,並在clearInterval調用後將其設置回-1。

相關問題