gpt4 book ai didi

javascript - 使用 for 循环调用 setTimeout

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:24 28 4
gpt4 key购买 nike

我写了一个改变div的css定位的函数

我已经成功地使用 setTimeout 在特定时间间隔调用该函数

现在我要做的是在同一页面上的 28 个不同的 div 上调用函数,每个 div 都有自己的速度。

我的想法是我可以像这样使用 for 循环来做到这一点:

for (var x = 0; x < 28; x++)
{ setInterval(function(){changeDirection(divlist[x])}, divs[divlist[x]].speed);}

使用存储速度和 ID 的对象“divs”

我能让他们都反对计时器的唯一方法是像这样调用 setInterval 28 次...

setInterval(function(){changeDirection(divlist[1])}, divs[divlist[1]].speed);
setInterval(function(){changeDirection(divlist[2])}, divs[divlist[2]].speed);
setInterval(function(){changeDirection(divlist[3])}, divs[divlist[3]].speed);
setInterval(function(){changeDirection(divlist[4])}, divs[divlist[4]].speed);....etc

for 循环不工作...

有人知道为什么吗?有没有办法用像这样的循环在许多不同的函数上调用 setInterval

最佳答案

您需要“锚定”循环迭代器的值,否则它会不断递增并且所有间隔都会影响第 29 个,而第 29 个不存在。

for(var x=0; x<28; x++) {
(function(x) {
// code goes here
})(x);
}

但是,在一个页面上放置 28 个计时器是一个非常糟糕的主意。考虑重写您的代码,以便您只有一个区间根据速度值计算新位置。

关于javascript - 使用 for 循环调用 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020127/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com