在DOM里 屬性節點是不是元素節點的子節點?
書上有這麼一句話
&Choose an image.&
書上說&只有一個節點,是文本節點。為什麼id屬性節點不是p元素的子節點?
看到後面,書上又有:
&&
@小爝@顧軼靈@張立理@司徒正美@Jasin Yip@鄭海波
在舊 DOM 規範中,屬性繼承自 Node,是一種特殊的節點。
$0.attributes[0] instanceof Node
// true
$0.attributes[0].nodeType === Node.ATTRIBUTE_NODE
// true
元素的屬性在DOM中以Attr類型表示。從技術角度來看,屬性就是存在於attributes屬性中的節點。(你看,屬性節點順口就來了)。屬性節點具有以下特徵:
1.nodeType的值為2;(attributes是一個大房子啊,裡面每一個小鬼nodeType都是2)
2.nodeName的值是屬性的名稱;3.nodeValue的值是屬性的值;4.parentNode的值為null;(它只是一個小鬼啊,attributes只是一個屬性對象,並不是父節點哦~不要妄圖根據屬性節點來找父親。很多標籤可以擁有相同的屬性~)5.在html中沒有子節點;儘管它們也是節點,但是屬性卻不被認為是DOM文檔樹的一部分。(插個嘴,屬性只是用來描述特性、附帶信息的,就像你的身高、體重、名字一樣一樣的,用來描述你是什麼樣。)
ok。了解了以上信息之後:div元素確實有一個子節點--ATTRIBUTE_NODE。就是attributes屬性啦~!而且裡面有一個id屬性。因此,屬性節點確實是div的子節點。
但是,按照我們平常的理解,子節點一般都是指DOM樹裡面存在的節點,不是嗎。- 事實1.曾經的DOM規範中,屬性是節點
- 1.1 屬性節點與其所從屬的元素節點,是從屬關係,但並不是父子關係
- 1.2 書上這麼說,div的子節點有屬性節點這個「子節點」,不論對於是什麼時候DOM規範,都是不妥的- 事實2.新的DOM規範中,屬性不是節點屬性不是節點啦。
節點只有文本節點和元素節點,屬性是元素節點的屬性。&&屬性是屬性,你看的什麼書?要麼是你看的不仔細,要麼是書錯了。
推薦閱讀:
※fibjs 對比 nodejs 有哪些優點和缺點?
※ECMAScript 6 會重蹈 ECMAScript 4 的覆轍嗎?
※為何大多數人和新的項目不用 TypeScript 而用 JS + 一堆輔助工具?
※IDE中,選中一個變數,文檔中其它地方的該變數也會高亮,這種功能叫什麼?如何實現的?
※2017你覺得未來五年最具前景的一門編程語言是什麼?
TAG:前端開發 | HTML | JavaScript | DOM |