成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Dom 節(jié)點(diǎn)和 元素 有啥區(qū)別?好家伙,我弄懂了!

開(kāi)發(fā) 前端
DOM 還使用術(shù)語(yǔ)元素(Element)它與節(jié)點(diǎn)非常相似。那么,DOM節(jié)點(diǎn)和元素之間有什么區(qū)別呢?

[[376543]]

本文已經(jīng)過(guò)原作者 Shadeed 授權(quán)翻譯。

DOM 還使用術(shù)語(yǔ)元素(Element)它與節(jié)點(diǎn)非常相似。那么,DOM節(jié)點(diǎn)和元素之間有什么區(qū)別呢?

1. DOM節(jié)點(diǎn)

理解節(jié)點(diǎn)和元素之間區(qū)別的關(guān)鍵是理解節(jié)點(diǎn)是什么。

更高的角度來(lái)看,DOM文檔由節(jié)點(diǎn)層次結(jié)構(gòu)組成。每個(gè)節(jié)點(diǎn)可以具有父級(jí)和/或子級(jí)。

看看下面的HTML文檔:

  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.     <title>My Page</title> 
  5.   </head> 
  6.   <body> 
  7.     <!-- Page Body --> 
  8.     <h2>My Page</h2> 
  9.     <p id="content">Thank you for visiting my web page!</p> 
  10.   </body> 
  11. </html> 

該文檔包含以下節(jié)點(diǎn)層次結(jié)構(gòu):

<html>是文檔樹(shù)中的一個(gè)節(jié)點(diǎn)。它有2個(gè)子節(jié)點(diǎn):<head>和<body>。

<body>子有3個(gè)子節(jié)點(diǎn)的節(jié)點(diǎn):注釋節(jié)點(diǎn)  <!-- Page Body -->,標(biāo)題<h2>,段落<p>。<body>節(jié)點(diǎn)的父節(jié)點(diǎn)是<html>節(jié)點(diǎn)。

HTML文檔中的標(biāo)記代表一個(gè)節(jié)點(diǎn),有趣的是普通文本也是一個(gè)節(jié)點(diǎn)。段落節(jié)點(diǎn)<p>有1個(gè)子節(jié)點(diǎn):文本節(jié)點(diǎn)“Thank you for visiting my web page!”。

1.2節(jié)點(diǎn)類型

我們要如何區(qū)分這些不同類型的節(jié)點(diǎn)?答案在于DOM Node接口,尤其是Node.nodeType屬性。

Node.nodeType可以具有代表節(jié)點(diǎn)類型的以下值之一:

  • Node.ELEMENT_NODE
  • Node.ATTRIBUTE_NODE
  • Node.TEXT_NODE
  • Node.CDATA_SECTION_NODE
  • Node.PROCESSING_INSTRUCTION_NODE
  • Node.COMMENT_NODE
  • Node.DOCUMENT_NODE
  • Node.DOCUMENT_TYPE_NODE
  • Node.DOCUMENT_FRAGMENT_NODE
  • Node.NOTATION_NODE

常量有意義地指示節(jié)點(diǎn)類型:例如Node.ELEMENT_NODE代表元素節(jié)點(diǎn),Node.TEXT_NODE代表文本節(jié)點(diǎn),Node.DOCUMENT_NODE文檔節(jié)點(diǎn),依此類推。

例如,讓我們選擇段落節(jié)點(diǎn),然后查看其nodeType屬性:

  1. const paragraph = document.querySelector('p'); 
  2.  
  3. paragraph.nodeType === Node.ELEMENT_NODE; // => true 

代表整個(gè)節(jié)點(diǎn)文檔樹(shù)的節(jié)點(diǎn)類型為Node.DOCUMENT_NODE:

  1. document.nodeType === Node.DOCUMENT_NODE; // => true 

2. DOM元素

掌握了DOM節(jié)點(diǎn)的知識(shí)之后,現(xiàn)在該區(qū)分DOM節(jié)點(diǎn)和元素了。

如果你了解節(jié)點(diǎn)術(shù)語(yǔ),那么答案是顯而易見(jiàn)的:元素是特定類型的節(jié)點(diǎn) element (Node.ELEMENT_NODE),以及文檔、注釋、文本等類型。

簡(jiǎn)而言之,元素是使用HTML文檔中的標(biāo)記編寫的節(jié)點(diǎn)。<html>,<head>,<title>,<body>,<h2>,<p>都是元素,因?yàn)樗鼈冇蓸?biāo)簽表示。

文檔類型,注釋,文本節(jié)點(diǎn)不是元素,因?yàn)樗鼈儧](méi)有使用標(biāo)簽編寫:

Node是節(jié)點(diǎn)的構(gòu)造函數(shù),HTMLElement 是 JS DOM 中元素的構(gòu)造函數(shù)。段落既是節(jié)點(diǎn)又是元素,它同時(shí)是Node和HTMLElement的實(shí)例

  1. const paragraph = document.querySelector('p'); 
  2.  
  3. paragraph instanceof Node;        // => true 
  4. paragraph instanceof HTMLElement; // => true 

3. DOM屬性:節(jié)點(diǎn)和元素

除了區(qū)分節(jié)點(diǎn)和元素之外,還需要區(qū)分只包含節(jié)點(diǎn)或只包含元素的DOM屬性。

節(jié)點(diǎn)類型的以下屬性評(píng)估為一個(gè)節(jié)點(diǎn)或節(jié)點(diǎn)集合(NodeList):

  1. node.parentNode; // Node or null 
  2.  
  3. node.firstChild; // Node or null 
  4. node.lastChild;  // Node or null 
  5.  
  6. node.childNodes; // NodeList 

但是,以下屬性是元素或元素集合(HTMLCollection):

  1. node.parentElement; // HTMLElement or null 
  2.  
  3. node.children;      // HTMLCollection 

由于node.childNodes和node.children都返回子級(jí)列表,因此為什么要同時(shí)具有這兩個(gè)屬性?好問(wèn)題!

考慮以下包含某些文本的段落元素:

  1. <p> 
  2.   <b>Thank you</b> for visiting my web page! 
  3. </p> 

打開(kāi)演示,然后查看parapgraph節(jié)點(diǎn)的childNodes和children屬性:

  1. const paragraph = document.querySelector('p'); 
  2.  
  3. paragraph.childNodes; // NodeList:       [HTMLElement, Text] 
  4. paragraph.children;   // HTMLCollection: [HTMLElement] 

paragraph.childNodes集合包含2個(gè)節(jié)點(diǎn):<b>Thank you</b>,,以及for visiting my web page!文本節(jié)點(diǎn)!

但是,paragraph.children集合僅包含1個(gè)項(xiàng)目:<b>Thank you</b>。

由于paragraph.children僅包含元素,因此此處未包含文本節(jié)點(diǎn),因?yàn)槠漕愋褪俏谋荆∟ode.TEXT_NODE),而不是元素(Node.ELEMENT_NODE)。

同時(shí)擁有node.childNodes和node.children,我們可以選擇要訪問(wèn)的子級(jí)集合:所有子級(jí)節(jié)點(diǎn)或僅子級(jí)是元素。

4.總結(jié)

DOM文檔是節(jié)點(diǎn)的分層集合,每個(gè)節(jié)點(diǎn)可以具有父級(jí)和/或子級(jí)。如果了解節(jié)點(diǎn)是什么,那么了解DOM節(jié)點(diǎn)和元素之間的區(qū)別就很容易。

節(jié)點(diǎn)有類型,元素類型就是其中之一,元素由HTML文檔中的標(biāo)記表示。

完~ 我是小智,我要去刷碗了,我們下期再見(jiàn)!

作者:Shadeed  譯者:前端小智  來(lái)源:dmitripavlutin

原文:https://dmitripautin.com/dom-node-element/

本文轉(zhuǎn)載自微信公眾號(hào)「 大遷世界」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 大遷世界公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 大遷世界
相關(guān)推薦

2017-06-06 11:10:03

USB 3.1Type-C接口

2025-01-10 14:20:29

2021-03-26 20:23:53

Java管理系統(tǒng)

2010-09-13 16:46:29

JavaScriptHTML DOM節(jié)點(diǎn)

2022-01-17 10:07:05

PodmanDocker容器

2023-01-31 15:33:03

5GWi-Fi邊緣計(jì)算

2021-02-02 05:41:16

底層設(shè)計(jì)頂層

2023-10-11 08:18:22

RocketMQ邏輯訂閱

2024-03-05 18:19:07

localhostLinux數(shù)據(jù)庫(kù)

2018-11-29 09:30:04

ARMMIPS處理器

2021-01-19 07:51:12

JavaScriptJavac++

2021-10-19 14:49:49

CSS前端

2021-12-31 09:23:22

SDNSD-WAN網(wǎng)絡(luò)技術(shù)

2023-01-06 10:52:30

SQL索引存儲(chǔ)

2023-01-05 18:14:32

淺拷貝深拷貝Python

2023-10-19 08:47:24

DDR4DDR5

2021-04-19 09:27:03

Java線程操作系統(tǒng)

2018-07-17 14:29:57

云桌面

2015-09-07 14:31:33

云計(jì)算SDNNFV

2022-09-15 08:38:39

WebCPU數(shù)量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 三级在线免费观看 | 亚洲精品乱码久久久久久久久 | 奇米久久久 | 亚洲激情av | 精品一区二区三区在线观看国产 | www.久草.com | 欧美成人精品欧美一级 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 亚洲在线 | 日韩二 | 欧美日韩在线一区二区 | 精品久久久久久18免费网站 | 国产精品久久久久婷婷二区次 | 亚洲精品一区在线 | av免费网址| 国内精品久久久久久 | 国产一级淫片a直接免费看 免费a网站 | 国产精品www| 在线观看国产91 | 日韩在线欧美 | 91久久精品一区二区二区 | 久久久精品| 欧美日韩在线观看一区 | 日韩中文字幕视频在线观看 | 日本一区二区三区四区 | 日韩在线观看网站 | 天天影视网天天综合色在线播放 | 亚洲国产精品久久久 | 人人做人人澡人人爽欧美 | 久久蜜桃av一区二区天堂 | 免费黄色网址视频 | 天天操操 | 奇米影视在线 | 欧美一级电影免费 | 日韩免费在线 | 亚洲一区日韩 | 91色在线| 免费中文字幕日韩欧美 | 亚洲一区视频在线 | 国产精品视频一二三区 | 91福利网 |