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

Dom 節點和 元素 有啥區別?好家伙,我弄懂了!

開發 前端
DOM 還使用術語元素(Element)它與節點非常相似。那么,DOM節點和元素之間有什么區別呢?

[[376543]]

本文已經過原作者 Shadeed 授權翻譯。

DOM 還使用術語元素(Element)它與節點非常相似。那么,DOM節點和元素之間有什么區別呢?

1. DOM節點

理解節點和元素之間區別的關鍵是理解節點是什么。

更高的角度來看,DOM文檔由節點層次結構組成。每個節點可以具有父級和/或子級。

看看下面的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> 

該文檔包含以下節點層次結構:

<html>是文檔樹中的一個節點。它有2個子節點:<head>和<body>。

<body>子有3個子節點的節點:注釋節點  <!-- Page Body -->,標題<h2>,段落<p>。<body>節點的父節點是<html>節點。

HTML文檔中的標記代表一個節點,有趣的是普通文本也是一個節點。段落節點<p>有1個子節點:文本節點“Thank you for visiting my web page!”。

1.2節點類型

我們要如何區分這些不同類型的節點?答案在于DOM Node接口,尤其是Node.nodeType屬性。

Node.nodeType可以具有代表節點類型的以下值之一:

  • 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

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

例如,讓我們選擇段落節點,然后查看其nodeType屬性:

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

代表整個節點文檔樹的節點類型為Node.DOCUMENT_NODE:

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

2. DOM元素

掌握了DOM節點的知識之后,現在該區分DOM節點和元素了。

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

簡而言之,元素是使用HTML文檔中的標記編寫的節點。<html>,<head>,<title>,<body>,<h2>,<p>都是元素,因為它們由標簽表示。

文檔類型,注釋,文本節點不是元素,因為它們沒有使用標簽編寫:

Node是節點的構造函數,HTMLElement 是 JS DOM 中元素的構造函數。段落既是節點又是元素,它同時是Node和HTMLElement的實例

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

3. DOM屬性:節點和元素

除了區分節點和元素之外,還需要區分只包含節點或只包含元素的DOM屬性。

節點類型的以下屬性評估為一個節點或節點集合(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都返回子級列表,因此為什么要同時具有這兩個屬性?好問題!

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

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

打開演示,然后查看parapgraph節點的childNodes和children屬性:

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

paragraph.childNodes集合包含2個節點:<b>Thank you</b>,,以及for visiting my web page!文本節點!

但是,paragraph.children集合僅包含1個項目:<b>Thank you</b>。

由于paragraph.children僅包含元素,因此此處未包含文本節點,因為其類型是文本(Node.TEXT_NODE),而不是元素(Node.ELEMENT_NODE)。

同時擁有node.childNodes和node.children,我們可以選擇要訪問的子級集合:所有子級節點或僅子級是元素。

4.總結

DOM文檔是節點的分層集合,每個節點可以具有父級和/或子級。如果了解節點是什么,那么了解DOM節點和元素之間的區別就很容易。

節點有類型,元素類型就是其中之一,元素由HTML文檔中的標記表示。

完~ 我是小智,我要去刷碗了,我們下期再見!

作者:Shadeed  譯者:前端小智  來源:dmitripavlutin

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

本文轉載自微信公眾號「 大遷世界」,可以通過以下二維碼關注。轉載本文請聯系 大遷世界公眾號。

 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2017-06-06 11:10:03

USB 3.1Type-C接口

2025-01-10 14:20:29

2021-03-26 20:23:53

Java管理系統

2010-09-13 16:46:29

JavaScriptHTML DOM節點

2022-01-17 10:07:05

PodmanDocker容器

2023-01-31 15:33:03

5GWi-Fi邊緣計算

2021-02-02 05:41:16

底層設計頂層

2023-10-11 08:18:22

RocketMQ邏輯訂閱

2024-03-05 18:19:07

localhostLinux數據庫

2018-11-29 09:30:04

ARMMIPS處理器

2021-10-19 14:49:49

CSS前端

2021-01-19 07:51:12

JavaScriptJavac++

2021-12-31 09:23:22

SDNSD-WAN網絡技術

2023-01-06 10:52:30

SQL索引存儲

2023-01-05 18:14:32

淺拷貝深拷貝Python

2023-10-19 08:47:24

DDR4DDR5

2015-09-07 14:31:33

云計算SDNNFV

2021-04-19 09:27:03

Java線程操作系統

2018-07-17 14:29:57

云桌面

2022-09-15 08:38:39

WebCPU數量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费观看男女羞羞视频 | 国产免费国产 | 午夜噜噜噜 | 激情福利视频 | 黄色毛片一级 | 亚洲国产精品99久久久久久久久 | 精品欧美一区免费观看α√ | 亚洲成人三级 | 国产精品视频久久 | 天堂久久一区 | 欧美一区二区三区四区五区无卡码 | 久久久久久久久国产精品 | 男人的天堂avav | 国产极品粉嫩美女呻吟在线看人 | 在线免费黄色小视频 | 久久久久久久久久久爱 | 亚洲欧美日韩一区二区 | 麻豆毛片 | 黄色av大片| 国产成人精品午夜视频免费 | 秋霞在线一区二区 | 欧美激情精品久久久久久变态 | 六月色婷 | 亚洲黄色在线免费观看 | 中文字幕二区 | 最新黄色在线观看 | 激情综合五月天 | 国产精品91网站 | 久久久www成人免费精品张筱雨 | 欧美日批| 久久久久久久久久久一区二区 | 久久久久网站 | 欧美日本一区二区 | 国产高清在线观看 | 久草a√ | 久久99深爱久久99精品 | 日韩欧美在线免费 | 免费国产一区二区 | 久久精品色欧美aⅴ一区二区 | 欧美 中文字幕 | 国产美女在线精品免费 |