闭包是我在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
。