编程语言
首页 > 编程语言> > javascript – for循环中setTimeout()的clearTimeout()

javascript – for循环中setTimeout()的clearTimeout()

作者:互联网

for循环中的clearTimeout()不起作用

for(i=0;i<10;i++){
    myVar = setTimeout(function(){
        alert("Hello")
    }, 3000);
}

小提琴:not working

小提琴:working

请帮我在第一个小提琴中停止setTimeout().

解决方法:

你必须保持对循环中创建的每个超时的引用,然后迭代并清除每个超时,否则你只是用新的超时覆盖myVar而不清除前一个,并且随时丢失句柄等.

$(document).ready(function(){
    var myVar = []

    $("#myfunction").click(myFunction);
    $("#mystopfunction").click(myStopFunction);

    function myFunction() {
        for(i=0;i<10;i++){
            myVar.push(
                setTimeout(function(){
                    alert("Hello")
                }, 3000)
            );
        }
    }

    function myStopFunction() {
        myVar.forEach(function(timer) {
            clearTimeout(timer);
        });
    }
});

FIDDLE

标签:javascript,jquery,settimeout,cleartimeout
来源: https://codeday.me/bug/20190728/1561580.html