【发布时间】:2012-02-13 03:27:13
【问题描述】:
将html标签内的标准onClick重构到监听器,我的代码面临问题:
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 与循环中的最后一个索引,例如7
看起来,eventListeners 仅填充了此循环中的最后一个元素。
循环初始化看起来正确。
为什么会这样?
这里是live code
【问题讨论】:
-
你可以尝试在循环中声明
var吗?或在循环后为 td1 显式尝试相同的代码。听起来很愚蠢,让我们试试吧。 -
@Azodious,是的,已经试过了,结果是一样的
-
如果明确指定(硬编码),例如
td1工作正常 -
尝试创建长度为 8 的数组。用
td对象填充它,然后尝试将侦听器附加到索引。
标签: javascript events loops click listeners