這是與範圍做一個非常惱人的問題。當你在你的函數內部聲明setInterval時,你唯一可以清除的地方就在函數的迭代中。所以,
my_timer("") //Starts a timer in the function
my_timer("closeit") //Starts a timer in the function, then stops it
//with the other timer running in the background
你可以減少問題的事實,你的間隔得到多次聲明,你只能停止它的功能。所以,如果你想my_timer功能啓動定時器,但如果你給它「pauseit」的參數停下來,你可以實現這樣的事情:
function my_timer(pause){
console.log('function: '+pause);
if(typeof timer_mou === "undefined"){ //If the interval already exists, don't start a new one
timer_mou = //Defines in global scope
setInterval(function() {
console.log('counting');
}, 5000);
}
if (pause == 'closeit') {
clearInterval(timer_mou);
}
}
所以,在你的函數的新版本,它會檢查是否定義了間隔,如果沒有定義,請在全球範圍中對其進行定義,以便稍後將其刪除。
在手機上完成,所以這是我格式錯誤和拼寫錯誤的藉口。
爲什麼在if語句中closeit一個字符串? – sachsure
@sachsure我很初學JavaScript。你能解釋我嗎? – EnexoOnoma