2010-05-07 79 views
10

所以,我使用setInterval附加到onClick上了一個無限循環來處理這個函數。問題是,我無法在onClick中使用clearInterval來阻止它。我認爲這是因爲當我將一個clearInterval附加到一個onClick時,它會殺死一個特定的時間間隔而不是完全的函數。有什麼我可以做到通過onClick殺死所有間隔有沒有什麼辦法通過OnClick按鈕來殺死setInterval循環

這裏是我的.js file和我正在做的調用是

input type="button" value="generate" onClick="generation(); 

input type="button" value="Infinite Loop!" onclick="setInterval('generation()',1000);" 

input type="button" value="Reset" onclick="clearInterval(generation(),80;" // This one here is giving me trouble. 

回答

-1

generation();呼叫setTimeout到本身,而不是setInterval。這是你可以使用一點,如果邏輯在功能,以防止它運行相當容易setTimeout

var genTimer 
var stopGen = 0 

function generation() { 
    clearTimeout(genTimer) ///stop additional clicks from initiating more timers 
    . . . 
    if(!stopGen) { 
     genTimer = setTimeout(function(){generation()},1000) 
    } 
} 

}

+0

這並不直接回答的問題:「有什麼辦法殺死過一個onclick按鈕的setInterval循環」 – 2014-03-20 21:47:58

4

clearInterval應用上的setInterval返回值,就像這樣:

var interval = null; 
theSecondButton.onclick = function() { 
    if (interval === null) { 
     interval = setInterval(generation, 1000); 
    } 
} 
theThirdButton.onclick = function() { 
    if (interval !== null) { 
     clearInterval(interval); 
     interval = null; 
    } 
} 
+0

如果(間隔===空)應該是如果(時間間隔!== null) – Hatim 2017-04-15 06:54:27

+0

@Hatim:固定。 – kennytm 2017-04-15 08:13:31

20

的setInterval返回的句柄,您需要處理,因此您可以清除它

最簡單的方法是在你的html頭文件中爲句柄創建一個var,然後在你的onclick中使用var

// in the head 
var intervalHandle = null; 

// in the onclick to set 
intervalHandle = setInterval(.... 

// in the onclick to clear 
clearInterval(intervalHandle); 

http://www.w3schools.com/jsref/met_win_clearinterval.asp

相關問題