javascript - 在 `for` 循环和 `setTimeout()` 内传递数组和索引

标签 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);
}

任何人都可以阐明为什么会这样以及我如何正确传递数组和索引吗?

谢谢, 丹

最佳答案

应该是

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

}

关于javascript - 在 `for` 循环和 `setTimeout()` 内传递数组和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34739806/

相关文章:

java - for循环中的Findviewbyid()

javascript - ASP.NET 从 JS AJAX 调用非静态 web 方法

javascript - Laravel 表单与 jquery 仅显示纯文本

javascript - Plone 和 AngularJS 路由

c# - 通过 C# 中的属性检索嵌套 Powershell 对象的值

c - 使用 C 的另一个结构内的灵活长度结构数组

javascript - Getter/Setter 和原型(prototype)链

c# - setter/getter setter 数组

python - 在循环体中使用 remove 时,python "for...in..."如何工作?

java - for循环中的字符串比较