闭包是我在JS中还没有完全掌握的东西。我认为这是一个关闭问题。我正在尝试创建一个进度条。我想每隔x秒增加DIV的宽度。这是应该执行此操作的部分:

for(i=0;i<=counter;i++){
    setTimeout(function (){
        myDiv.style.width = wIncrement+"px"
        timeIncrement++;
        wIncrement++;
    },timeIncrement*1000);
}

我想发生的是每x秒增加栏的大小。如果可以的话,那不是事实。

我非常确定(希望)这是一个关闭问题,但是与setTimout混合使用的语法完全使我困惑。在这个示例中,谁能帮助我掌握解决封闭问题所需的概念?

最佳答案

关键是要在闭包内部增加timeIncrement。因此,有效的做法是在第一次超时之前,不要将所有的值都增加。这是更改后的代码:

for(i=0;i<=counter;i++){
    setTimeout(function (){
        myDiv.style.width = wIncrement+"px"
        wIncrement++;
    }, i*1000);
}

您仍然可能对wIncrement变量有疑问。由于这个原因,我也将使用setInterval而不是setTimeout

10-06 12:53