在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