2013-08-07 48 views
1

假設我有一個帶有title屬性的段落元素。由於DOM結構中的所有內容都是節點,p和title屬性之間的關係是什麼?他們是兄弟姐妹還是標題屬性<p>或兄弟姐妹的子節點?我可以使用nodeValue屬性訪問title屬性的內容嗎?在dom結構中屬性是子節點還是兄弟節點?

+4

屬性是** **不節點,但實際上該節點的屬性。 –

+0

那麼什麼樣的資格作爲dom結構中的節點呢? – Ashesh

+0

**標記**,而不是它們的屬性。 –

回答

9

具有屬性節點的元素是屬性節點的.ownerElement。否則不存在樹狀關係 - 屬性節點的兄弟姐妹,父節點等是空的。

http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-637646024

的Attr對象繼承Node接口,但由於它們不是 實際上它們描述的元素的子節點,DOM不會 考慮他們的文檔樹的一部分。因此,節點屬性 parentNode,previousSibling和nextSibling對於 Attr對象具有空值。

的關係是:

var p = document.createElement("p"); 
p.title = "hello"; 

var titleAttr = p.attributes.title //from the element to the attribute 

p = titleAttr.ownerElement //from the attribute node to the owning element 

而且我可以訪問使用nodeValue屬性

如果你有一個屬性節點title屬性的內容,你可以訪問密鑰/名稱:

titleAttr.nodeName; //"title" 

您可以通過訪問該值:

titleAttr.nodeValue; //"hello" 

另外,.nodeType2Node.ATTRIBUTE_NODE

+0

感謝您澄清它。所以屬性是節點,但它們不是dom樹的一部分。我曾經在w3schools上看到過一些關於屬性已經被表示爲dom樹的一部分的圖表。 – Ashesh

+0

@Ashesh我並不感到驚訝。見http://www.w3fools.com/ – Esailija

+0

我曾經遇到過這個網站,並聽說過有關w3schools的壞消息,但最近我遇到了一些使用w3schools作爲參考的書籍和視頻教程(來自lynda)! – Ashesh

相關問題