我有一个循环来收集某个类的所有元素并向该元素插入一些内容。
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/