javascript - 如何在循环中编写对立即调用的函数的回调?

标签 javascript iife

我有一个循环来收集某个类的所有元素并向该元素插入一些内容。

var node;
var nodes = document.getElementsByClassName('myclass');
for(var i = 1; i <= nodes.length; ++i) {
  function () {
    var element = document.creatElement('script');
    node = document.getElementById('my-node' + i);
    node.parentNode.insertBefore(element, node);
  })();
}

我有一些代码需要对此进行回调,因为它使用 node 的 id,但是当我运行该代码时,它只在数组的最后一个元素上运行,即使我调用它在 for 循环中。基本上我需要的是保留节点变量的值并在每次循环的回调函数中使用它。

如果我正确理解了 javascript,这意味着我需要回调,但我不知道如何为立即调用的函数编写回调。

最佳答案

我不明白你到底想要什么,但如果你想保留这个值,你需要将它传递给函数,因为闭包:

 var nodes = document.getElementsByClassName('myclass');
  for(i=1; i<=nodes.length; ++i){
    function(valueofI){
    var element = document.creatElement('script');
    node = document.getElementById('my-node'+valueofI);
    node.parentNode.insertBefore(element, node);
  })(i);
}

希望这是您所需要的。

关于javascript - 如何在循环中编写对立即调用的函数的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36094374/

相关文章:

JavaScript Bang "!"函数与前导分号 ";"IIFE

javascript - 检查参数的更好方法?

php - 用JS/jQuery编写此代码的最佳方法是什么? (具有多个字段的多个单个对象)

javascript - 类型错误 : Cannot read property 'getAccounts' of undefined

javascript - 通过 ES6 模块导入加载和使用旧版 JS 模块(例如 IIFE)

javascript - !function(){ }() 与 (function(){ })()

javascript - javascript 的绑定(bind)方法似乎没有按预期工作

javascript - 如何在此 javascript 代码中添加淡入效果?

javascript - Sencha 触摸 : Problem loading form: Cannot read property "OffsetBoundary of undefined"

javascript - 为什么 Eslint 会在 Airbnb 风格指南的原子中的两个空格规则中抛出错误,即使我将其设置为两个空格和硬制表符?