繁体   English   中英

注释掉引用数组的var声明会更改行为。 为什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM