簡體   English   中英

clearTimeout不會停止循環

[英]clearTimeout doesn't stop the loop

我的劇本:

var pics = [ "mads.jpeg" ,"niggs.jpg", "rits.jpeg"];

var totalPics = pics.length;    
var frame = document.getElementById("photos");    
var i = 0;   

function loop() {

    if(i > (totalPics - 1)){                   
        clearTimeout(loopTimer);        
    }

    frame.innerHTML = '<img id="i" class="image" src="real_bs/'+pics[i]+'" />';
    i++;

    loopTimer = setTimeout(loop, 300);

}

loop();

i超過totalPics - 1 ,循環不會停止,而是會顯示一個小的未定義圖像。 為什么clearTimeout(loopTimer)沒有停止它? 這是可變范圍的問題嗎?

您甚至不需要調用clearTimeout僅安排在剩下更多迭代時才調用setTimeout 從未開始的超時不必清除:

(function loop() {

    frame.innerHTML = '<img id="i" class="image" src="real_bs/' + pics[i] + '" />';

    if (++i < totalPics) {
        setTimeout(loop, 300);
    }

})();  // invoke immediately

只需在clearTimeout方法調用之后添加簡單的返回即可。 像這樣

if(i > (totalPics - 1)){                   
    clearTimeout(loopTimer);
    return;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM