gpt4 book ai didi

循环内的javascript setInterval 函数不起作用

转载 作者:行者123 更新时间:2023-12-02 14:36:00 24 4
gpt4 key购买 nike

我正在尝试“立即”启动多个 setInterval 函数。我有一个 for 循环,它调用一个索引函数,其中包含 setInterval。

我在这里寻找答案: JavaScript closure inside loops – simple practical example和这里: setInterval with loop time

但我仍然没有成功......

我已经检查了 tab 和 tab2,如果我在 setInterval 函数之外使用 console.log 读取它们,它们都可以工作

这是我的代码:

var tab = <?php echo json_encode($matrice); ?>;
var tab2 = new Array();

var funcs = [];

var countDownAction = new Array();

function countDown(i)
{
countDownAction[i] = setInterval(function(i)
{
// some actions

}, 1000);
}


for(var i = 0; i < tab.length; i++)
{
tab2[i] = [];

tab2[i]['hours'] = tab[i]['hours'];
tab2[i]['minutes'] = tab[i]['minutes'];
tab2[i]['seconds'] = tab[i]['seconds'];

funcs[i] = countDown.bind(this, i);
}

for(var j = 0; j < tab.length; j++)
{
funcs[j]();
}

最佳答案

调用setInterval内的函数时不带任何参数。因此,函数体内的i将是未定义的。

考虑重写 countDown 函数,如下所示:

function countDown(i)
{
countDownAction[i] = setInterval(function()
{
// some actions

}, 1000);
}

这样,函数体就可以访问外部作用域中的i

要清除计时器(例如 3.5 秒后),您可以执行以下操作:

setTimeout(function () {
for (var k = 0; k < tab.length; k++) {
clearInterval(countDownAction[k]);
}
}, 3500);

关于循环内的javascript setInterval 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37444612/

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