gpt4 book ai didi

javascript - window.setInterval 可能存在范围问题吗?

转载 作者:行者123 更新时间:2023-12-02 19:16:18 25 4
gpt4 key购买 nike

感谢您花时间阅读这篇文章。终于鼓起勇气在这里提问了:)希望我以正确的方式提出我的问题。

我的问题是,我试图在页面周围随机设置“方 block ”动画,但 setInterval 方法遇到问题。

您可以在这里找到它 http://jsfiddle.net/xEMXh/

在 Init 函数中,我尝试遍历每个幽灵元素并为其设置一个间隔函数,然后使其每 X 秒以随机方向动画一次。

for (ghostCount = 0; ghostCount < ghosts.length; ghostCount += 1) {
var speed = LesMccutcheon.GhostHunter.GetSpeed($(ghosts[ghostCount]).attr('data-speed')),
activeGhost = ghosts[ghostCount];
window.setInterval(function() {
LesMccutcheon.GhostHunter.MoveInDirection(activeGhost);
}, speed);
}

所发生的只是最后一个“幽灵”元素正在动画。我知道这是因为在 for 循环中我覆盖了变量,并且当第一个间隔被称为 activeGhost 时,它是 for 循环中的最后一个设置。

我尝试直接在 set.Interval 中使用ghosts[ghostCount],但似乎设置间隔无法访问它。我尝试将其设置为 set.Interval anom 函数内的变量,但它记录为未定义。

我唯一的半生不熟的想法是尝试设置一个增量变量标识符,但这似乎适得其反,而且不是一个好方法。

预先感谢您的任何建议!

莱斯

最佳答案

在您的代码中,每个循环都会覆盖变量activeGhost。只需将 setInterval 的调用放入这样的闭包中

( function (activeGhost) {
window.setInterval(function() {
LesMccutcheon.GhostHunter.MoveInDirection(activeGhost);
}, speed);
} ( activeGhost) );

这样应该保留对正确元素的引用。

关于javascript - window.setInterval 可能存在范围问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100587/

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