DOM複習(一)
目錄
節點樹
JavaScript在demo中的節點查詢,當要返回的是一組資料時,實際上js返回的都是類陣列(因為類陣列比陣列更加的靈活?)
檢視元素節點
document.getElementsByClassName()
IE9以下沒有這個方法document.getElementsByName()
name
屬性一般做為資料名來使用,同時:getElementsByName 在不同的瀏覽器其中工作方式不同。在IE和Opera中, getElementsByName() 方法還會返回那些 id 為指定值的元素。所以你要小心使用該方法,最好不要為元素的 name 和 id 賦予相同的值。
document.getElementById()
ID屬性不要濫用(他應該在全域性中是唯一的),雖然他是一個十分高效的方法。document.querySelector()
,document.querSelectorAll()
!無法選擇css偽類
使用css選擇器來選擇元素。
要注意docuemnt.querySelectorAll()
方法返回的NodeList
物件不是實時的,而是靜態的。
也就是說在你對文件做的任何修改對NodeList
物件都是沒有影響的。MDN如是說:大多數情況下,NodeList 物件都是個實時集合。意思是說,如果文件中的節點樹發生變化,則已經存在的 NodeList 物件也可能會變化。
在另一些情況下,NodeList 是一個靜態集合,也就意味著隨後對文件物件模型的任何改動都不會影響集合的內容。document.querySelectorAll 返回一個靜態的 NodeList。
特別是當你選擇如何遍歷 NodeList 中所有項,或快取列表長度的時候,最好牢記這種區分。
節點的查詢
基於Node
通用屬性的節點查詢
parentNode
返回該節點的父節點childNodes
該節點的所有子節點firstChild
該節點的第一個子節點lastChild
該節點的最後一個子節點nextSibling
後一個兄弟節點previousSibling
前一個兄弟節點
更詳細的可以在這裡看到 MDN
節點型別
節點的四個標準屬性(這裡的標準沒啥特殊的意思)
nodeName
元素的標籤名,只讀nodeValue
僅文字節點和註釋節點有的屬性,可寫nodeType
表示節點型別,數字值1
3
文字節點&&屬性節點?8
Comment
(註釋節點)- 詳情可見MDN
attributes
該節點的屬性的集合(屬性名只讀,屬性值可寫)hasChildNodes()
判斷是否有子節點
元素節點樹
查詢元素節點
也是Node
的基本方法
parentElement
元素父節點,和parentNode
的功能基本相同,不過前者是返回該元素的父元素節點(如果該元素的父級節點不是元素節點是那麼就會返回null
),而後者是返回該元素的節點,一般情況下這兩者沒有區別,但是當出現以下情況時:
Node.children
元素子節點,和Node.childNodes
的區別是前者只返回元素幾點,而後者還會返回文字and註釋節點 (除此以外IE9以下不相容)firstElementChild
第一個元素子節點lastElementChild
最後一個元素子節點nextElementSibling
後一個兄弟元素節點previousElementSibling
前一個兄弟元素節點