真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

js中Node和Element有哪些區(qū)別

這篇文章主要介紹了js中Node和Element有哪些區(qū)別,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

站在用戶的角度思考問題,與客戶深入溝通,找到呼倫貝爾網(wǎng)站設(shè)計(jì)與呼倫貝爾網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋呼倫貝爾地區(qū)。

js中Node和Element有哪些區(qū)別

準(zhǔn)備工作

在正式開始介紹 Node 和 Element 區(qū)別之前,我們先準(zhǔn)備以下代碼:


    This is parent content.
    This is child1.
    This is child2.

下面的絕大多數(shù)現(xiàn)象和結(jié)論都將借助這段代碼的結(jié)構(gòu)來進(jìn)行展示說明。

getElementById 獲取到的到底是什么?

document.getElementById() 方法應(yīng)該是我們最常使用的接口之一,那么它的返回值到底是 Node 還是 Element?

我們使用以下代碼驗(yàn)證一下:

let parentEle = document.getElementById('parent');
parentEle instanceof Node
// true
parentEle instanceof Element
// true
parentEle instanceof HTMLElement
// true

可以看到,document.getElementById() 獲取到的結(jié)果既是 Node 也是 Element。

Node、ELement 和 HTMLElement 有什么關(guān)系?

上面的代碼中為什么要用 Node、Element 和 HTMLElement 來做類型判斷?它們之間到底有何關(guān)系?

看代碼:

let parentEle = document.getElementById('parent');

parentEle.__proto__
// HTMLDivElement {…}

parentEle.__proto__.__proto__
// HTMLElement {…}

parentEle.__proto__.__proto__.__proto__
// Element {…}

parentEle.__proto__.__proto__.__proto__.__proto__
// Node {…}

parentEle.__proto__.__proto__.__proto__.__proto__.__proto__
// EventTarget {…}

parentEle.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__
// {constructor: ?, …}

parentEle.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__
// null

對(duì)于以上輸出結(jié)果,我們可以用一張圖更直觀地表示它們之間的關(guān)系:

js中Node和Element有哪些區(qū)別

這也就解釋了為什么 getElementById 獲取到的既是 Node 也是 Element,因?yàn)?Element 繼承于 Node。

從而也可以得出一個(gè)結(jié)論:Element 一定是 Node,但 Node 不一定是 Element。

所以:Element 可以使用 Node 的所有方法。

更直白地觀察 Node 和 Element

雖然得出了上面的結(jié)論,也清楚了 Node 和 Element 的關(guān)系,但是那只是理論,我們還需要更直白的結(jié)果來強(qiáng)化對(duì)理論的認(rèn)知。

js中Node和Element有哪些區(qū)別

NodeList 內(nèi)容:

Element.children 獲取到的只是父元素點(diǎn)下的所有 div,而 Element.childNodes 獲取到的卻是父節(jié)點(diǎn)下的所有節(jié)點(diǎn)(包含文本內(nèi)容、元素)。

單個(gè) Node 的界限在哪里?

從上面例子的 NodeList 內(nèi)容中,換行符 \n 被當(dāng)成一個(gè)單獨(dú)的 Node,由此產(chǎn)生了一個(gè)新的疑惑:?jiǎn)蝹€(gè) Node 產(chǎn)生的界限在哪里?

我們將用到的 HTML 代碼去掉格式化、合并為一行,修改如下:

This is parent content.This is child1.This is child2.

輸出結(jié)果:

js中Node和Element有哪些區(qū)別

NodeList 中的沒有換行符了,原來之前例子中 NodeList 里的換行符是因?yàn)樵即a中, HTML 標(biāo)簽與標(biāo)簽、內(nèi)容與標(biāo)簽之間換行而產(chǎn)生的。

現(xiàn)在就可以回答單個(gè) Node 的界限在哪里了,兩個(gè)方面:

比如,

1 2 3 4 5 6 7 8 9
,針對(duì)這段代碼來說:

再進(jìn)一步

因?yàn)樯厦娴睦又惺褂玫亩际菈K級(jí)元素,那如果使用行內(nèi)元素會(huì)怎樣?

試驗(yàn)一:

This is parent content.This is a span.This is child1.This is child2.

js中Node和Element有哪些區(qū)別

試驗(yàn)二:


    This is parent content\n.
        This is a span.
        This is child1.This is child2.
    

js中Node和Element有哪些區(qū)別

可以看到,即使使用了 span 元素,最后的結(jié)果也是符合上面得出的單個(gè) Node 界限結(jié)論的。

擴(kuò)展

從以上這么多例子中,我們可以再擴(kuò)展總結(jié)一下:

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“js中Node和Element有哪些區(qū)別”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!


新聞名稱:js中Node和Element有哪些區(qū)別
轉(zhuǎn)載來于:http://weahome.cn/article/jecsdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部