Javascript 使用循环调用js中的多个setInterval()函数

Javascript 使用循环调用js中的多个setInterval()函数,javascript,setinterval,Javascript,Setinterval,我是javascript新手,在正确使用setInterval函数时遇到了问题 基本上,我想在不同的给定时间间隔为不同的参数调用一个函数,这两个参数都在列表中 我有一个叫做myfunction的函数。我有一个名为myparam的列表,其中包含我要传递此函数的所有变量。最后我有一个名为myfrequency的列表,它是每次调用myfunction和myparam中给定的参数之间所需的时间,单位为毫秒。我正在尝试类似的方法,但不起作用: for(i=0;i<myparam.length();i

我是javascript新手,在正确使用setInterval函数时遇到了问题

基本上,我想在不同的给定时间间隔为不同的参数调用一个函数,这两个参数都在列表中

我有一个叫做myfunction的函数。我有一个名为myparam的列表,其中包含我要传递此函数的所有变量。最后我有一个名为myfrequency的列表,它是每次调用myfunction和myparam中给定的参数之间所需的时间,单位为毫秒。我正在尝试类似的方法,但不起作用:

for(i=0;i<myparam.length();i++;){
    setInterval(function(){myfunction(myparam[i]);},myfrequency[i]);
    }
上述代码的结果是,它只对最后一个索引有效。myfunction仅在myparam中的最后一个值的正确参数下以正确的间隔调用


为什么会发生这种情况?我认为setInterval设置在某个时间间隔调用函数是不正确的吗?

这是因为setInterval有一个延迟,这意味着该时间间隔何时运行 循环已经完成

要做到这一点,只需创建另一个函数,它将启动您的间隔

function StartInterval(index, frequency) {
    setInterval(function(){
        myfunction(index);
    },frequency);
}
然后在循环中调用这个函数并传递一些信息

for(i=0;i<myparam.length;i++){
    StartInterval(myparam[i], myfrequency[i])
}
/**设置所需的值**/ var myparam=[10,20,30]; var myfrequency=[100020003000]; 函数myfunctionindex{ console.logindex; } 函数StartIntervalindex,频率{ 设置间隔函数{ 功能指数; },频率; }
fori=0;我读了答案,其中一个显示了你的确切问题非常常见的问题。发生的事情是,当您的setInterval启动时,循环已经完成,所以我指向最后一个element@david添加延迟是否可以解决此问题?我试着在每次调用setInterval时用setTimeout添加一个延迟,但现在它根本不起作用了!还要注意的是,原始javascript存在一些语法问题。length是一个属性,而不是一个函数,假设myparam是一个数组,并且是for循环i++的最后一个分号;这是不需要的。这个问题的原因在于所谓的闭包。因为var i在调用myfunction的范围内,所以当间隔计时器过期时,i的值实际上已经超出了myparam数组的末尾,所以我很惊讶它会报告任何有意义的内容。它应该发送未定义到myfunction。非常感谢@初学者,我刚刚将你所说的融入到我的代码中,现在它可以完美地工作了@奶嘴21是的,我知道我原来的语法很糟糕,我试图简化我的实际代码,我做了一些修改