在實際工作,由於開發效率問題,很多人會使用的jquery庫來代替原生的javascript來對dom進行
操作,而忽略javascript本身對DOM的。
這里只討論javascript中的元素(element)和節點(node)。
關於childNode屬性和children屬性的區別·。下面直接上代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="parentDiv"> <!--注釋--> <div></div> </div> <script> console.log(document.getElementById('parentDiv').childNodes); //NodeList[5] console.log(document.getElementById('parentDiv').children) ; //HTMLCollection[1] </script> </body> </html>
控制台打印的結果:
childNodes屬性返回的是NodeList數組,是屬於節點(也包括元素)的屬性,而children屬性返回的是子元素,是屬於元素的屬性。
而在Nodelist數組里面也有元素存在,證明了元素也是節點的一種,即元素節點。
W3C中的解釋是:
在 HTML DOM (文檔對象模型)中,每個部分都是節點:
- 文檔本身是文檔節點
- 所有 HTML 元素是元素節點
- 所有 HTML 屬性是屬性節點
- HTML 元素內的文本是文本節點 (包括回車符也是屬於文本節點)
- 注釋是注釋節點
Element 對象可以擁有類型為元素節點、文本節點、注釋節點的子節點。
NodeList 對象表示節點列表,比如 HTML 元素的子節點集合。
元素也可以擁有屬性。屬性是屬性節點。
總結:元素是元素節點,是節點中的一種,但元素節點中可以包含很多的節點。