for循环0中的jQuery setinterval

时间:2012-02-25 12:12:57

标签: javascript jquery

  

可能重复:
  Javascript infamous Loop problem?

使用for循环,它什么都不做。没有for循环,它完美无缺。

没有for循环:

var refreshId = setInterval(function(){
  $("#k1").fadeTo(1000,0.01,callfunc).fadeTo(1000,1);
}, 5000);
var refreshId = setInterval(function(){
  $("#k2").fadeTo(1000,0.01,callfunc).fadeTo(1000,1);
}, 5000);

依旧......

使用for循环:

for(var i=1;i<7;i++){
  var refreshId = setInterval(function(){
    $("#k"+i).fadeTo(1000,0.01,callfunc).fadeTo(1000,1);
  }, 5000);
}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

由于@pimvdb指出你在内部循环中有闭包(setTimeout创建一个),它不起作用,你应该有类似的东西:

for(var i = 1; i < 7; i++) {
    (function(e) {
        var refreshId = setTimeout(function() {
            $("#k"+e).fadeTo(1000,0.01,callfunc).fadeTo(1000,1);
        }, 5000);
    })(i);
}

您可能还需要查看this question以获取更多信息。