2014-03-06 43 views
-1

出於某種原因,計時器不從下面的代碼清除:的JavaScript的setInterval沒有被清除

var countdown = function() { 
    if (!interval || !countdownOngoing) { 
     countdownOngoing = true; 
     interval = setInterval(countdownFunction, 1000); 
    } 
}; 

function countdownFunction() { 
    if(seconds == 0) { 
     if (minutes == 0) { 
      countdownOngoing = false; 
      clearInterval(interval); 
      return; 
     } else { 
      minutes--; 
      seconds = 60; 
     } 
    } 

    seconds--; 
} 

的setInterval的被調用clearInterval後仍在工作。我錯過了什麼?

+0

'interval'的定義在哪裏? – Phil

+0

@Phil它看起來像間隔是一個全局變量綁定到窗口 – sachinjain024

+0

把'VAR間隔;'功能外 – CRABOLO

回答

0

假設它看起來像我在下面寫的,它可能是你的分鐘+秒邏輯。

var interval = null, 
countDownGoing = false; 

function countdown() { 
    if(!interval || !countDownGoing) { 
     interval = setInterval(countdownFunction, 1 * 1000); 
     countDownGoing = true; 
    } 
} 

countdown() 

setTimeout(function() { 
    countDownGoing = false; 
}, 5 * 1000); 


function countdownFunction() { 
    if(!countDownGoing) { 
     clearInterval(interval); 
    } else { 
     alert(countDownGoing); 
    } 
}