我在 SO 上做了一些挖掘,但找不到我想要实现的确切目标。
简单来说,我有一个类似的功能
function(){
for(i=0;i<10;i++){
setInterval(function(){ alert(i);), 1000)
}
}
我期望的是 10 个 setIntervals,它会每 1 秒提醒 1 到 10,发生的事情是它会一直提醒 10,因为在 for 循环结束时 'i' 是 10。如何将“i”传递给 setInterval 匿名函数,以便我可以在 setInterval 中保留 i 的值?
以上是我实际问题的简化版本。我实际上正在尝试这样做 var 定时器 = [];
function(obj){
//Clear any intervals
for(i=0;i<timer.length;i++){
clearInterval(timers[i]);
}
// Empty timers Array
timers = [];
for(i in obj){
//My object from the dom. This guy is what I am trying to preserve
my_obj = document.getElementById(i);
if(obj[i] === "Something"){
timers.push(setInterval(function(){
my_obj.replace_class(["Something", "Otherthing"],"Something");
}, 1000)
}
}
}
上面代码中的my_obj总是引用obj中的id = last 'i'。
我说的有道理吗?
最佳答案
这应该可以解决问题;)
for(i = 1; i < 11; i++){
(function(local_i){
setInterval(function(){ console.log(local_i); }, 1000 * local_i)
})(i);
}
关于javascript - setInterval - 如何保留传入的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844788/