javascript中12種DOM節點類型概述

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/08/18/5785189.html
-Advertisement-
Play Games

× 目錄 [1]元素 [2]特性 [3]文本[4]CDATA[5]實體引用[6]實體名稱[7]處理指令[8]註釋[9]文檔[10]文檔類型[11]文檔片段[12]DTD 前面的話 DOM是javascript操作網頁的介面,全稱為文檔對象模型(Document Object Model)。它的作用是 ...


×
目錄
[1]元素 [2]特性 [3]文本[4]CDATA[5]實體引用[6]實體名稱[7]處理指令[8]註釋[9]文檔[10]文檔類型[11]文檔片段[12]DTD

前面的話

  DOM是javascript操作網頁的介面,全稱為文檔對象模型(Document Object Model)。它的作用是將網頁轉為一個javascript對象,從而可以使用javascript對網頁進行各種操作(比如增刪內容)。瀏覽器會根據DOM模型,將HTML文檔解析成一系列的節點,再由這些節點組成一個樹狀結構。DOM的最小組成單位叫做節點(node),文檔的樹形結構(DOM樹)由12種類型的節點組成。本文將主要說明DOM節點類型

 

屬性

  一般地,節點至少擁有nodeType、nodeName和nodeValue這三個基本屬性。節點類型不同,這三個屬性的值也不相同

nodeType

  nodeType屬性返回節點類型的常數值。不同的類型對應不同的常數值,12種類型分別對應1到12的常數值

元素節點              Node.ELEMENT_NODE(1)
屬性節點              Node.ATTRIBUTE_NODE(2)
文本節點              Node.TEXT_NODE(3)
CDATA節點             Node.CDATA_SECTION_NODE(4)
實體引用名稱節點       Node.ENTRY_REFERENCE_NODE(5)
實體名稱節點          Node.ENTITY_NODE(6)
處理指令節點          Node.PROCESSING_INSTRUCTION_NODE(7)
註釋節點              Node.COMMENT_NODE(8)
文檔節點              Node.DOCUMENT_NODE(9)
文檔類型節點          Node.DOCUMENT_TYPE_NODE(10)
文檔片段節點          Node.DOCUMENT_FRAGMENT_NODE(11)
DTD聲明節點            Node.NOTATION_NODE(12)

  DOM定義了一個Node介面,這個介面在javascript中是作為Node類型實現的,而在IE8-瀏覽器中的所有DOM對象都是以COM對象的形式實現的。所以,IE8-瀏覽器並不支持Node對象的寫法

//在標準瀏覽器下返回1,而在IE8-瀏覽器中報錯,提示Node未定義
console.log(Node.ELEMENT_NODE);//1

nodeName

  nodeName屬性返回節點的名稱

nodeValue

  nodeValue屬性返回或設置當前節點的值,格式為字元串

  接下來,將按照節點類型的常數值對應順序,從1到12進行詳細說明

 

【1】元素節點

  元素節點element對應網頁的HTML標簽元素。元素節點的節點類型nodeType值是1,節點名稱nodeName值是大寫的標簽名,nodeValue值是null

  以body元素為例

// 1 'BODY' null
console.log(document.body.nodeType,document.body.nodeName,document.body.nodeValue)
console.log(Node.ELEMENT_NODE === 1);//true

 

【2】特性節點

  元素特性節點attribute對應網頁中HTML標簽的屬性,它只存在於元素的attributes屬性中,並不是DOM文檔樹的一部分。特性節點的節點類型nodeType值是2,節點名稱nodeName值是屬性名,nodeValue值是屬性值

  現在,div元素有id="test"的屬性

<div id="test"></div>
<script>
var attr = test.attributes.id;
//2 'id' 'test'
console.log(attr.nodeType,attr.nodeName,attr.nodeValue)
console.log(Node.ATTRIBUTE_NODE === 2);//true    
</script>

 

【3】文本節點

  文本節點text代表網頁中的HTML標簽內容。文本節點的節點類型nodeType值是3,節點名稱nodeName值是'#text',nodeValue值是標簽內容值

  現在,div元素內容為'測試'

<div id="test">測試</div>
<script>
var txt = test.firstChild;
//3 '#text' '測試'
console.log(txt.nodeType,txt.nodeName,txt.nodeValue)
console.log(Node.TEXT_NODE === 3);//true    
</script>

 

【4】CDATA節點

  CDATASection類型只針對基於XML的文檔,只出現在XML文檔中,表示的是CDATA區域,格式一般為

<![CDATA[
]]>

  該類型節點的節點類型nodeType的值為4,節點名稱nodeName的值為'#cdata-section',nodevalue的值是CDATA區域中的內容

 

【5】實體引用名稱節點

  實體是一個聲明,指定了在XML中取代內容或標記而使用的名稱。 實體包含兩個部分, 首先,必須使用實體聲明將名稱綁定到替換內容。 實體聲明是使用 <!ENTITY name "value"> 語法在文檔類型定義(DTD)或XML架構中創建的。其次,在實體聲明中定義的名稱隨後將在 XML 中使用。 在XML中使用時,該名稱稱為實體引用。

  實體引用名稱節點entry_reference的節點類型nodeType的值為5,節點名稱nodeName的值為實體引用的名稱,nodeValue的值為null

//實體名稱
<!ENTITY publisher "Microsoft Press">
//實體名稱引用
<pubinfo>Published by &publisher;</pubinfo>

 

【6】實體名稱節點

  上面已經詳細解釋過,就不再贅述

  該節點的節點類型nodeType的值為6,節點名稱nodeName的值為實體名稱,nodeValue的值為null

 

【7】處理指令節點

  處理指令節點ProcessingInstruction的節點類型nodeType的值為7,節點名稱nodeName的值為target,nodeValue的值為entire content excluding the target

 

【8】註釋節點

  註釋節點comment表示網頁中的HTML註釋。註釋節點的節點類型nodeType的值為8,節點名稱nodeName的值為'#comment',nodeValue的值為註釋的內容

  現在,在id為myDiv的div元素中存在一個<!-- 我是註釋內容 -->

<div id="myDiv"><!-- 我是註釋內容 --></div>
<script>
var com = myDiv.firstChild;
//8 '#comment' '我是註釋內容'
console.log(com.nodeType,com.nodeName,com.nodeValue)
console.log(Node.COMMENT_NODE === 8);//true    
</script>

 

【9】文檔節點

  文檔節點document表示HTML文檔,也稱為根節點,指向document對象。文檔節點的節點類型nodeType的值為9,節點名稱nodeName的值為'#document',nodeValue的值為null

<script>
//9 "#document" null
console.log(document.nodeType,document.nodeName,document.nodeValue)
console.log(Node.DOCUMENT_NODE === 9);//true    
</script>

 

【10】文檔類型節點

  文檔類型節點DocumentType包含著與文檔的doctype有關的所有信息。文檔類型節點的節點類型nodeType的值為10,節點名稱nodeName的值為doctype的名稱,nodeValue的值為null

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var nodeDocumentType = document.firstChild;
//10 "html" null
console.log(nodeDocumentType.nodeType,nodeDocumentType.nodeName,nodeDocumentType.nodeValue);
console.log(Node.DOCUMENT_TYPE_NODE === 10);
</script>
</body>
</html>

 

【11】文檔片段節點

  文檔片段節點DocumentFragment在文檔中沒有對應的標記,是一種輕量級的文檔,可以包含和控制節點,但不會像完整的文檔尋親戰勝額外的資源。該節點的節點類型nodeType的值為11,節點名稱nodeName的值為'#document-fragment',nodeValue的值為null

<script>
var nodeDocumentFragment = document.createDocumentFragment();    
//11 "#document-fragment" null
console.log(nodeDocumentFragment.nodeType,nodeDocumentFragment.nodeName,nodeDocumentFragment.nodeValue);
console.log(Node.DOCUMENT_FRAGMENT_NODE === 11);//true
</script>

 

【12】DTD聲明節點

  DTD聲明節點notation代表DTD中聲明的符號。該節點的節點類型nodeType的值為12,節點名稱nodeName的值為符號名稱,nodeValue的值為null

 

最後

  在這12種DOM節點類型中,有一些適用於XML文檔,有一些是不常用的類型。而對於常用類型,後面會陸續進行詳細介紹,本文對這12種節點類型只做概述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代碼: package test.extend; public class Base { public Base(){ System.out.println("基類構造"); say(); } public void say(){ System.out.println("我是基類"); } publ... ...
  • 0.前提條件 環境兩台ubuntu版本14.04 64位系統(並獲取root許可權) 假設兩台伺服器ip為:172.16.34.214(master),172.16.34.215(backup),keepalived的虛擬ip為172.16.34.216 兩台ubuntu系統上裝好docker,版本如 ...
  • owlcarousel是一款貓頭鷹旋轉木馬插件。OwlCarousel優勢相容所有瀏覽器支持響應式支持 CSS3 過度支持觸摸事件支持 JSON 及自定義 JSON 格式支持進度條支持自定義事件支持延遲載入支持自適應高度 線上實例 使用方法 複製 複製 參數詳解 itemsCustom itemsS ...
  • 一、頁面可見性(visibility) 主要提供兩個屬性,一個事件(都在document對象上):1. 屬性: 1.1. hidden:獲取或設置當前頁面的可見性,boolean值; 1.2. visibilityState: 獲取當前頁面可見性狀態,值為hidden、visibility其中一個2... ...
  • 1、 常用屬性:①color:文本顏色;②background-color:背景顏色;③font-size:文字大小; 2、 樣式聲明:①內部樣式:style=“樣式規則;”,寫於作用標簽內,優先順序最高;②內聯樣式:<style>樣式規則</style>,寫於head標簽內,優先順序其次;③外聯樣式: ...
  • 前言: 正則表達是就是用特殊字元組成的有一定規則的邏輯公式(規則字元串),主要用於對字元串進行過濾操作。 正則表達式的三個功能: 1.快速匹配指定的字元串; 2.替換遵照正則表達式規則的字元串; 3.在目標字元串中篩選指定的子字元串; 正則表達式的語法: 正則表達式是由普通字元(例如:a-z)和元字 ...
  • h5活動需要插入音頻,但又需要自定義樣式,於是自己寫咯 html css js 以上基本可以實現自定義音頻播放,但是在拖動進度條的時候出現了問題,電腦上是ok的,但是在手機上可以拖動,只不過音頻的總時長比正常播放少了好幾分鐘,導致拖動進度後播放不准確。通過測試發現手機上拿到的duration(總時長 ...
  • 我們可以通過css來做出動畫效果,下麵我為大家演示的是div的旋轉,顏色過渡的動畫 效果自己測試,很絢麗哦 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...