在JavaScript中有一种简单的方法来定位父母的父母?父母的父母的父母
我使用this.parentNode
作为函数的元素来选择父项,我尝试了this.parent.parentNode
和this.parentNode.parentNode
,但都只是简单地返回直接父项。
我试图影响围绕'这'的div的div。我确实设法使用一个简单的循环语句来重复父母节点选择两次,但我认为还有更好的方法。
在JavaScript中有一种简单的方法来定位父母的父母?父母的父母的父母
我使用this.parentNode
作为函数的元素来选择父项,我尝试了this.parent.parentNode
和this.parentNode.parentNode
,但都只是简单地返回直接父项。
我试图影响围绕'这'的div的div。我确实设法使用一个简单的循环语句来重复父母节点选择两次,但我认为还有更好的方法。
this.parentNode.parentNode
是正确的,您必须(抱歉!)在您尝试过的测试中发生错误。
HTML:
<div id="outermost">Outermost
<div id="inner1">Inner 1
<div id="inner2">Inner 2</div>
</div>
</div>
的JavaScript:
var inner2 = document.getElementById("inner2");
display("inner2.id = " + inner2.id);
display("inner2.parentNode.id = " + inner2.parentNode.id);
display("inner2.parentNode.parentNode.id = " + inner2.parentNode.parentNode.id);
display("Try clicking the blue 'inner2' above");
inner2.onclick = function(e) {
display("Click: this.id = " + this.id);
if (this.parentNode) {
display("Click: this.parentNode.id = " + this.parentNode.id);
if (this.parentNode.parentNode) {
display("Click: this.parentNode.parentNode.id = " + this.parentNode.parentNode.id);
}
}
};
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
输出(假设一个点击的指示):
inner2.id = inner2 inner2.parentNode.id = inner1 inner2.parentNode.parentNode.id = outermost Try clicking the blue 'inner2' above Click: e.target.id = inner2 Click: e.target.parentNode.id = inner1 Click: e.target.parentNode.parentNode.id = outermost
谢谢。我无法想象我在测试过程中犯了什么错误。 – user2126833 2013-03-12 16:54:41
@ user2126833:不用担心。这是否整理出来了,还是你在真实代码中仍然看到问题?如果是这样,你可能想发布一个新的问题给出完整的上下文(标记和代码),人们会很乐意提供帮助。例如,它可能是它*似乎*给你同一个父母吗?例如,如果你在'div'的'div'里面有'div',所有的三个层次都是'div'元素,所以很容易认为'.parentNode'和'.parentNode.parentNode'都给了你相同的元素... – 2013-03-12 17:01:59
谢谢你的回答是非常有帮助的。应该有一个明确的指南来解析所有的HTML元素,无论是动态的还是静态的,这真是令人困惑,从这里到那里收集所有这些信息。 – BhargavSushant 2017-05-03 20:22:46
'this.parentNode.parentNode'应该只是罚款。我没有理由不这样做。 – Christoph 2013-03-12 16:44:42
'this.parentNode.parentNode'应该可以工作。 – Starx 2013-03-12 16:44:43