如何将一个事件附加到DOM的所有节点上?
问题描述:
我只是尝试将所有节点附加到单击事件。但我不明白如何在onload
时添加它们。
我只是试图找出从点击的地方到根节点的节点列表的完整路径。这里是我的代码,我无法确定要传递的addEvent()参数。如何将一个事件附加到DOM的所有节点上?
function addEvent(node){ // i used this function in onload event
if(node == null) return;
node.onclick = catchClickedItem;
for(var i = 0; i < node.childNodes.length; i++){
addEvent(node.childNodes[i]);
}
}
function catchClickedItem(e){
alert(e.target);
}
我试图与这个添加的addEvent:
window.onload = addEvent
我遇到这个错误
Uncaught TypeError: Cannot read property 'length' of undefined
答
添加事件侦听器的每一个节点是一个坏主意。代替。而不是使用addEventListener
而不是onclick
。
document.addEventListener("click", function(e) {
alert(e.target.innerHTML);
e.stopPropagation();
});
<div>
<div>hello</div>
<div>
<div>world</div>
<div>
<div>foo</div>
</div>
</div>
</div>
你能证明你怎么骂你的'的addEvent()'函数? –
'childNodes'也包含'Text'和注释节点。你真的想要这个吗?另外,“这不起作用”不是问题描述。 – Xufox
寻求调试帮助的问题(“**为什么不是这个代码工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身**中重现**所需的最短代码。没有**明确问题陈述**的问题对其他读者无用。请参阅:[如何创建最小,完整和可验证示例](https://*.com/help/mcve)。 –