2017-06-15 70 views
0

JS的相對新人,試圖圍繞調度包圍我的頭。這段代碼將開始追加,但不會阻止它。我很確定問題在於'clearInterval'需要解決一個已經賦值'set​​Interval'函數的變量。我似乎無法理解的是如何正確地說出這一點。正確的方法setInterval和clearInterval

var hmm = function appendStuff(){ 
    $("p").append("<b>Appended text</b>"); 
}; 
$("#start").click(function() { 
    console.log("startClicked"); // working... 
    window.setInterval(hmm, 1000) // working... 
}); 
$("#stop").click(function() { 
    console.log("stopClicked"); // working... 
    window.clearInterval(hmm) 
}); 

謝謝!

+0

.asp看起來你需要將'clearInterval'應用於'setInterval'的返回值,但不是你設置的間隔爲 – Faraway

回答

1

setInterval()函數返回一個ID。這是你想要分配給hmm

此外,setInterval()的第一個參數是您希望調用每個間隔的函數。

var hmm = null; 
function appendStuff(){ 
    $("p").append("<b>Appended text</b>"); 
}; 
$("#start").click(function() { 
    console.log("startClicked"); // working... 
    hmm = window.setInterval(appendStuff, 1000) // working... 
}); 
$("#stop").click(function() { 
    console.log("stopClicked"); // working... 
    window.clearInterval(hmm) 
}); 
+1

*的函數。「另外,setInterval()的第一個參數是你想調用每個間隔的函數。 「* - 是的,這就是OP的代碼已經做的。 – nnnnnn

+1

我知道。但既然我們已經改變了嗯的價值,我只是澄清它不應該是嗯了。 –

1

您需要的setInterval的對象賦值給一個變量,並把它傳遞給clearInterval,不是的setInterval的功能可按可變進clearInterval。請參閱here

var hmm = function appendStuff(){ 
    $("p").append("<b>Appended text</b>"); 
}; 
var interval; 
$("#start").click(function() { 
    console.log("startClicked"); // working... 
    interval = window.setInterval(hmm, 1000) // working... 
}); 
$("#stop").click(function() { 
    console.log("stopClicked"); // working... 
    window.clearInterval(interval) 
}); 
0

您可以使用w3School的這個setInterval()示例here。基本上你使用類似語法例如:

var yourIntervalVariable = setInterval(function(){ 
    // do something here.. 
}, 1000); 

然後你就可以在這樣的變量我們可以使用clearInterval():基於https://www.w3schools.com/jsref/met_win_clearinterval

clearInterval(yourIntervalVariable); 
相關問題