javascript - 无法将事件处理程序注册到 javascript 中的元素数组

标签 javascript

function recordData(){
    var element = document.getElementsByClassName("bubble");
    for(var i = 0; i < element.length; i++){
        element[i].addEventListener("click", function(){
            var id = element[i].attributes.id.value;
            var x_cordinate = element[i].children[2].attributes.x.value;
            var y_cordinate = element[i].children[2].attributes.y.value;
            var keyword = element[i].children[0].textContent;
            clicked_elements.push({
                id: id,
                x_cordinate: x_cordinate,
                y_cordinate: y_cordinate,
                keyword: keyword
            })
        }, false);
    }
}

当我尝试单击 html 中的元素时,它显示错误“未捕获的类型错误:无法读取未定义的属性‘属性’”。我无法在 addEventListener 方法中访问该特定元素的 id 和其他属性。如果我需要记录点击的内容,请解释我在这里做错了什么。

最佳答案

您不能在 addEventListener 回调中使用 i,因为它将在 for 循环结束后执行。

使用 this 而不是 elements[i] 来获取闭包内的当前元素。

关于javascript - 无法将事件处理程序注册到 javascript 中的元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37204989/

相关文章:

javascript - 在不转义的情况下在 Handlebars 模板中插入 html

javascript - 正确使用 wp.data.subscribe

javascript - 使用 jQuery 在滚动条上重新定位元素

javascript - 循环遍历数组的 if 语句不起作用

javascript - 如果服务器关闭,ajax 调用的 jQuery 错误回调

javascript - 在 iframe 上时检测鼠标移动吗?

javascript - 如何配置 IntelliJ 来解析 JavaScript 程序中的 ~

javascript - Sencha ExtJS 4 链接组合框问题

javascript - 如何使用javascript直接从网页录制

javascript - 如何在 PaperJS 中将图像添加到路径