網(wǎng)頁中node和element是什么關(guān)系,如何看待dom操作?
node即:節(jié)點(diǎn),element即:元素。簡(jiǎn)單的說就是Node是一個(gè)基類,DOM中的Element,Text和Comment都繼承于它。 換句話說,Element,Text和Comment是三種特殊的Node,它們分別叫做ELEMENT_NODE, TEXT_NODE和COMMENT_NODE。所以我們平時(shí)使用的html上的元素,即Element,是類型為ELEMENT_NODE的Node。
<body> ????we?can?put?text?here?1...??????????????????????text_node ????<h1>China</h1>?????????????????????????????????element_node ????we?can?put?text?here?2...??????????????????????text_node ????<!--?My?comment?...??-->???????????????????????comment_node ????we?can?put?text?here?3...??????????????????????text_node ????<p>China?is?a?popular?country?with...</p>??????element_node ????we?can?put?text?here?4...??????????????????????text_node ????<div> ??????<button>See?details</button>?????????????????element_node ????</div> ????we?can?put?text?here?5?...?????????????????????text_node </body>
NodeList vs HTMLCollection:
我們用childNodes找到了NodeList,但我們操作DOM時(shí)往往不想操作Node(我只想操作元素Element),那么如何獲取ElementList呢?
其實(shí)我們經(jīng)常使用的getElementsByXXX返回的就是一個(gè)ElementList,只不過它的真實(shí)名字是ElementCollection。就像NodeList是Node的集合一樣,ElementCollection也是Element的集合。但需要特別注意的是:NodeList和ElementCollcetion都不是真正的數(shù)組,如果document.getElementsByTagName('a') instanceof Array,那么必然是false。
DOM(Document Object Model)簡(jiǎn)稱文檔對(duì)象模型,它是html和xml是文檔編程的接口,它將文檔解析為樹結(jié)構(gòu),這個(gè)樹的根部就是document,而document的首個(gè)子節(jié)點(diǎn)(childeNodes[0])就是html,這才有了后面的一系列html元素。