要解决“addEventListener()仅在最后一个循环周期中被调用”的问题,可以使用闭包来捕获循环变量的值。以下是一个示例代码:
for (var i = 0; i < 5; i++) {
(function(index) {
var element = document.getElementById('element' + index);
element.addEventListener('click', function() {
console.log('Clicked on element ' + index);
});
})(i);
}
在上面的代码中,我们使用了一个立即执行函数(IIFE)来创建一个闭包,将循环变量 i
的值作为参数传递给函数。这样,在每次循环中,都会创建一个新的闭包,并且每个闭包都会捕获不同的 index
值。
通过使用闭包,我们可以保证每个事件监听器都能正确地捕获到其对应的 index
值,而不会受到循环的影响。这样,即使事件被触发时循环已经结束,事件监听器仍然能够正确地引用到其对应的 index
值。