我的问题实际上是理解性的,我有一个工作解决方案,只是不理解它的工作原理。
好的,所以我要做的是在循环中添加setTimeout,并通过它传递一个正在变化的值。例如:
for (i=0;i<11;i++)
{
setTimeout("alert(i)",1000);
}
如果我理解正确,这个不起作用是因为Javascript不像PHP一样将i的值传递给函数,而是传递i的引用 - 这个引用并不是静态的,而是随着计数器的变化而不断改变。
我找到了一个解决方案,方法如下:
for (i=0;i<11;i++)
{
setTimeout(function(x){return function(){alert(x)};}(i),1000);
}
我不太明白这实际上是做什么。它似乎将“alert”函数传回调用函数,但我无法理解其含义。
我可以使用此解决方案并将其适应其他情境,但我真的想了解我的所有代码,而不只是使用我在某处找到的东西,并对其工作感到满意。此外,我正在寻找一个更精简的版本以达到同样的目的。
谢谢,马尔科。