【问题标题】:addEventListener is not working on nodeaddEventListener 不在节点上工作
【发布时间】:2014-11-20 14:53:48
【问题描述】:

我有这个简单的javascript 代码。

 var nodeList = document.getElementById(active_tab_selector.attr('id')).getElementsByTagName('span');
for (var i = 0, node; node = nodeList[i]; i++) {
node.addEventListener('click', function() {getChild(this.getAttribute(attribute));
                        }, false);
}

但是 click 由于某种原因它不起作用,但如果我删除 getElementById(active_tab_selector.attr('id')) 它工作正常。有什么想法吗?

【问题讨论】:

  • 也许你传递的“id”值没有元素。你检查过吗?
  • 是的,当我在控制台上显示结果时,它是正确的。
  • 该代码是否在构建 DOM 之前运行?您是否尝试过添加console.log() 调用来检查代码中的实际点?
  • 当我点击某个链接时会触发此代码。所以它是在构建 DOM 之后,我使用 console.log() 显示结果它们是正确的。
  • 好吧,元素内部真的有任何<span> 元素与“id”有关吗?

标签: javascript addeventlistener nodelist


【解决方案1】:

for循环为每个节点迭代x次但只有最后一个节点对回调有效 然后通过调用特定节点的 addEventListener 的方法来更改它

for (var i = 0, node; node = nodeList[i]; i++) {
  addEventTo( node );
}

function addEventTo( node ) {
  node.addEventListener( 'click', function () {
    getChild(this.getAttribute(attribute));
  }, false);
}

更多信息here

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多