在循环中添加“点击”事件监听器[重复]

onClickhtml标记中的标准重构为侦听器,我的代码面临问题:

var td;

for (var t=1;t<8;t++){

td = document.getElementById('td'+t);

if (typeof window.addEventListener==='function'){

td.addEventListener('click',function(){

console.log(td);

})}

}

td单击元素时,假定单击的td是循环中的最后一个索引,例如7Lookslike,eventListeners仅填充了此循环中的最后一个元素,循环初始化看起来正确,为什么会这样呢?

回答:

您需要将事件侦听器的分配包装在闭包中,例如:

var td;

for (var t = 1; t < 8; t++){

td = document.getElementById('td'+t);

if (typeof window.addEventListener === 'function'){

(function (_td) {

td.addEventListener('click', function(){

console.log(_td);

});

})(td);

}

}

以上是 在循环中添加“点击”事件监听器[重复] 的全部内容, 来源链接: utcz.com/qa/416332.html

回到顶部