[英]Javascript Array strange behavior. Global declaration is unable to hold value
[英]Commenting out a var declaration that references an array changes behavior. Why?
我有以下Java脚本代码段
<script>
var editables = document.getElementsByClassName("canEdit");
function editHandler(el) {
return function() {
window.alert(el.textContent);
}
}
for (var i = 0; i < editables.length; i++) {
var el = editables[i];
el.onclick = editHandler(editables[i]);
}
</script>
如果我注释掉var el = editables[i];
那么当我单击可编辑元素时,警报将不再弹出。 为什么会这样呢?
那条线定义了el
。 没有它,就没有元素可以附加onclick
处理程序。 如果没有收到参考错误,则必须在代码的其他地方定义了一个名为el
变量(可能是全局变量,如果您的代码段是准确的)。
为什么会这样呢?
因为您使用el
绑定了事件处理程序。 如果您注释掉该行
var el = editables[i];
那么变量el
将不存在,
el.onclick = editHandler(editables[i]);
会引发引用错误,因为您试图访问不存在的变量的.onclick
属性。 事件处理程序从未绑定。
您可以改用editables[i]
:
editables[i].onclick = editHandler(editables[i]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.