循环内的javascript setInterval函数不工作
我试图“同时”启动几个setInterval函数。 我有一个for循环,它调用一个索引函数,其中包含setInterval 我在这里寻找了两个答案: 在这里: 但我仍然在挣扎,没有成功 我已经检查了tab和tab2,如果我在setInterval函数之外使用console.log读取它们,这两个选项都有效 这是我的密码:循环内的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
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函数。。。