循环内的javascript setInterval函数不工作

循环内的javascript setInterval函数不工作,javascript,loops,setinterval,Javascript,Loops,Setinterval,我试图“同时”启动几个setInterval函数。 我有一个for循环,它调用一个索引函数,其中包含setInterval 我在这里寻找了两个答案: 在这里: 但我仍然在挣扎,没有成功 我已经检查了tab和tab2,如果我在setInterval函数之外使用console.log读取它们,这两个选项都有效 这是我的密码: var tab = <?php echo json_encode($matrice); ?>; var tab2 = new Array(); var func

我试图“同时”启动几个setInterval函数。 我有一个for循环,它调用一个索引函数,其中包含setInterval

我在这里寻找了两个答案: 在这里:

但我仍然在挣扎,没有成功

我已经检查了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]();
}
var选项卡=;
var tab2=新数组();
var funcs=[];
var countDownAction=新数组();
功能倒计时(一)
{
倒计时动作[i]=设置间隔(函数(i)
{
//一些行动
}, 1000);  
}
对于(变量i=0;i
调用
setInterval
中的函数时不带任何参数。因此,函数体中的
i
将是未定义的

考虑按如下方式重写
倒计时
函数:

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);
setTimeout(函数(){
对于(var k=0;k
调用
setInterval
中的函数时不带任何参数。因此,函数体中的
i
将是未定义的

考虑按如下方式重写
倒计时
函数:

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);
setTimeout(函数(){
对于(var k=0;k
我建议您使用全局变量进行倒计时操作,您可以尝试以下方法吗

window.countDownAction = window.countDownAction || [];

我建议您在倒计时操作中使用全局变量,您可以试试下面的方法吗

window.countDownAction = window.countDownAction || [];

问题是循环太快,因此setInterval函数获取i变量的最后一个值。 我们需要使用如下外部函数在区间内直接设置i值:

var interval_Array=new Array();

对于(var i;i,问题在于循环太快,因此setInterval函数获取i变量的最后一个值。 我们需要使用如下外部函数在区间内直接设置i值:

var interval_Array=new Array();

对于(var i;i)您的
//一些操作取决于变量
i
?是的,这些操作取决于变量i您正在向
setinterval
传递一个函数,该函数接受一个参数
i
,但是
setinterval
没有向其回调传递任何参数,因此
i
将是未定义的。请尝试
setinterval>(function()
…“但我仍在努力,没有成功…”在你的眼中定义成功。假设发生的事情与当前(没有)发生的事情相比发生?您的
//某些操作是否取决于变量
i
?是的,这些操作取决于变量i您正在向
setinterval
传递一个函数,该函数接受一个参数
i
,但是
setinterval
没有向其回调传递任何参数,因此
i
将是未定义的。请尝试
setinterval>(function()
…“但我仍在努力,没有成功…”在你的眼中定义成功。假设发生的事情与当前(没有)发生的事情相比发生了什么事?听起来可能很愚蠢,但我不能用调用那些setInterval函数的方法清除那些multiples setInterval函数…听起来可能很愚蠢,但我不能用调用那些setInterval函数的方法清除那些multiples setInterval函数。。。