在`for`循环和`setTimeout()`中传递数组和索引

时间:2016-01-12 09:27:23

标签: javascript arrays for-loop settimeout self-invoking-function

我想在templates[i]循环中setTimeout内的for点击

for(var i=0; i<templates.length; i++){
    setTimeout(function(){
        (function(){
            templates[i].click();
        }(i, templates));
    }, 200);
}

我收到错误templates[i]未定义。

然而,这样的事情很好:

for(var i=0; i<templates.length; i++){  
    setTimeout(function(){
        (function(){
            console.log(templates_arr+templates)
        }(templates_arr, templates));
    }, 200);
}

有人能说清楚为什么会这样,以及如何正确传递数组和索引?

谢谢, 丹

1 个答案:

答案 0 :(得分:1)

应该是

for(var i=0; i<templates.length; i++){
   (function(i,templates){
       setTimeout(function(){
            templates[i].click();
       }, 200);
   })(i, templates);

}