我有一個函數以不同的速度顯示單詞。該函數開始確定,但我似乎無法讓代碼正確地再次停止它。 我知道我必須使用clearInterval,我認爲這是爲了清除var myTimer - 但我無法得到這個工作。使用clearInterval來停止函數
任何幫助,將不勝感激
HTML
<input type="button" value="Start" onclick="wpm($numberWords,$speed)" />
<input type="button" value="Stop" onclick="stopWpm()" />
JS
var myTimer;
function wpm(numberWords,speed) {
var input = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
var output = new Array();
for (var i = 0; i < input.length; i += numberWords) {
output.push(input.slice(i, i + numberWords).join(" "));
}
var i=0;
var myTimer =setInterval(timer,speed); //1000 will run it every 1 second
function timer() {
document.getElementById("timer").innerHTML = output[i];
i++;
if (i == output.length){
clearInterval(myTimer);
}
}
}
function stopWpm() {
clearInterval(myTimer);
}
謝謝你的幫助 - 這個作品,我現在明白了爲什麼!但是,如果我多次單擊「開始」按鈕,代碼將在循環結束時顯示「未定義」。有沒有辦法檢查函數是否已經在運行? – tomp
@tomp,檢查函數是否已經在運行,做下一步:每次調用'clearInterval(myTimer)'''後添加代碼'myTimer = 0;'然後你就可以檢查函數運行了if if(myTimer){/ *代碼,如果功能運行或計劃運行* /}其他{/ *代碼如果功能不運行* /}'。並接受答案。 –
謝謝安德魯 - 非常感謝! – tomp