我是javascript的新手,我在使用setInterval()函数时遇到了麻烦。
基本上我想以不同的给定间隔为不同的参数调用一个函数,我在列表中都有这些参数。
我有一个名为myfunction的函数。我有一个名为myparam的列表,其中包含我想要传递此函数的所有变量。最后我有一个名为myfrequency的列表,这是我在每次myfunction调用和myparam中给出的参数之间想要的毫秒时间。我正在尝试这样的事情,但它不起作用:
for(i=0;i<myparam.length();i++;){
setInterval(function(){myfunction(myparam[i]);},myfrequency[i]);
}
上述代码的结果是它仅适用于最后一个索引。 myfunction以正确的间隔调用,只有myparam中的最后一个值的正确参数。
为什么会这样?我认为setInterval()以不正确的间隔设置函数调用吗?
答案 0 :(得分:0)
好吧,因为setInterval有一个延迟,这意味着间隔运行 循环已经完成
要做到这一点,只需创建另一个将启动间隔的功能
function StartInterval(index, frequency) {
setInterval(function(){
myfunction(index);
},frequency);
}
然后在你的循环中调用这个函数并传递一些东西
for(i=0;i<myparam.length;i++){
StartInterval(myparam[i], myfrequency[i])
}
/** set what value you want **/
var myparam = [10,20,30];
var myfrequency = [1000,2000,3000];
function myfunction(index) {
console.log(index);
}
function StartInterval(index, frequency) {
setInterval(function(){
myfunction(index);
},frequency);
}
for(i=0;i<myparam.length;i++){
StartInterval(myparam[i], myfrequency[i])
}
&#13;