【发布时间】:2016-05-25 18:05:27
【问题描述】:
我正在尝试“一次”启动多个 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]();
}
【问题讨论】:
-
您的
// some actions是否依赖于变量i? -
是的,这些动作取决于变量 i
-
您将一个函数传递给
setinterval,该函数接受一个参数i,但setInterval没有向其回调传递任何参数,因此i将是未定义的。 -
试试
setInterval(function ()... -
“但我还在挣扎,没有成功……” 在你眼中定义成功。假设会发生什么与当前(未)发生什么?
标签: javascript loops setinterval