HTML DOM基礎知識

来源:http://www.cnblogs.com/jasmine-95/archive/2016/03/20/5297163.html
-Advertisement-
Play Games

1、HTML DOM 定義了訪問和操作HTML文檔的標準方法。 2、HTML DOM 把 HTML 文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。 3、通過 JavaScript,您可以重構整個 HTML 文檔。您可以添加、移除、改變或重排頁面上的項目。要改變頁面的某個東西,JavaScript


HTML DOM基礎知識

一、什麼是DOM?

1、HTML DOM 定義了訪問和操作HTML文檔的標準方法。

2、HTML DOM 把 HTML 文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。

3、通過 JavaScript,您可以重構整個 HTML 文檔。您可以添加、移除、改變或重排頁面上的項目。要改變頁面的某個東西,JavaScript 就需要獲得對 HTML 文檔中所有元素進行訪問的入口。這個入口,連同對 HTML 元素進行添加、移動、改變或移除的方法和屬性,都是通過文檔對象模型來獲得的(DOM)。DOM 可被 JavaScript 用來讀取、改變 HTML、XHTML 以及 XML 文檔。

4、DOM 被分為不同的部分(核心、XML及HTML)和級別(DOM Level 1/2/3):

     *Core DOM:定義了一套標準的針對任何結構化文檔的對象
*XML DOM:定義了一套標準的針對 XML 文檔的對象
    *HTML DOM:定義了一套標準的針對 HTML 文檔的對象。 

 


二、HTML DOM節點及節點樹

1、節點

根據 DOM,HTML 文檔中的每個成分都是一個節點。

DOM 是這樣規定的:

  • 整個文檔是一個文檔節點
  • 每個 HTML 標簽是一個元素節點
  • 包含在 HTML 元素中的文本是文本節點
  • 每一個 HTML 屬性是一個屬性節點
  • 註釋屬於註釋節點

2、Node 層次

節點彼此都有等級關係。

HTML 文檔中的所有節點組成了一個文檔樹(或節點樹)。HTML 文檔中的每個元素、屬性、文本等都代表著樹中的一個節點。樹起始於文檔節點,並由此繼續伸出枝條,直到處於這棵樹最低級別的所有文本節點為止。

下麵這個圖片表示一個文檔樹(節點樹):

3、節點樹

1 <html>
2   <head>
3     <title>DOM Tutorial</title> 
4   </head> 
5   <body> 
6     <h1>DOM Lesson one</h1> 
7     <p>Hello world!</p> 
8   </body> 
9 </html>

  上面所有的節點彼此間都存在關係

  *除文檔節點之外的每個節點都有父節點。舉例,<head> 和 <body> 的父節點是 <html> 節點,文本節點 "Hello world!" 的父節點是 <p> 節點。

  *大部分元素節點都有子節點。比方說,<head> 節點有一個子節點:<title> 節點。<title> 節點也有一個子節點:文本節點 "DOM Tutorial"。

  *當節點分享同一個父節點時,它們就是同輩(同級節點)。比方說,<h1> 和 <p>是同輩,因為它們的父節點均是 <body> 節點。

  *節點也可以擁有後代,後代指某個節點的所有子節點,或者這些子節點的子節點,以此類推。比方說,所有的文本節點都是 <html>節點的後代,而第一個文本節點是 <head> 節點的後代。

  *節點也可以擁有先輩。先輩是某個節點的父節點,或者父節點的父節點,以此類推。比方說,所有的文本節點都可把 <html> 節點作為先輩節點。


三、HTML DOM訪問節點的方法

1.查找並訪問節點

你可通過若幹種方法來查找您希望操作的元素:

  • 通過使用 getElementById() 和 getElementsByTagName() 方法
  • 通過使用一個元素節點的 parentNode、firstChild 以及 lastChild 屬性 

2.getElementById() getElementsByTagName()

(1)getElementById() 可通過指定的 ID 來返回元素,語法:

document.getElementById("ID"); 

 

(2)getElementsByTagName() 方法會使用指定的標簽名返回所有的元素(作為一個節點列表),這些元素是您在使用此方法時所處的元素的後代。getElementsByTagName() 可被用於任何的 HTML 元素:

語法:

document.getElementsByTagName("標簽名稱"); 

或者:

document.getElementById('ID').getElementsByTagName("標簽名稱"); 

<訪問節點列表時,索引號從0開始>

3.parentNode、firstChild以及lastChild

這三個屬性 parentNode、firstChild 以及 lastChild 可遵循文檔的結構,在文檔中進行“短距離的旅行”。對 firstChild 最普遍的用法是訪問某個元素的文本;parentNode 屬性常被用來改變文檔的結構;

4.根節點

有兩種特殊的文檔屬性可用來訪問根節點:

  • document.documentElement
  • document.body

第一個屬性可返回存在於 XML 以及 HTML 文檔中的文檔根節點。

第二個屬性是對 HTML 頁面的特殊擴展,提供了對 <body> 標簽的直接訪問。

 

 

 


四.節點信息

每個節點都擁有包含著關於節點某些信息的屬性。這些屬性是:

  • nodeName(節點名稱)
  • nodeValue(節點值)
  • nodeType(節點類型) 

1.nodeName

nodeName 屬性含有某個節點的名稱。

  • 元素節點的 nodeName 是標簽名稱
  • 屬性節點的 nodeName 是屬性名稱
  • 文本節點的 nodeName 永遠是 #text
  • 文檔節點的 nodeName 永遠是 #document

註釋:nodeName 所包含的 XML 元素的標簽名稱永遠是大寫的

2.nodeValue

對於文本節點,nodeValue 屬性包含文本。

對於屬性節點,nodeValue 屬性包含屬性值。

nodeValue 屬性對於文檔節點和元素節點是不可用的。

3.nodeType

nodeType 屬性可返回節點的類型。



 


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

-Advertisement-
Play Games
更多相關文章
  • 利用SocketServer模塊來實現網路客戶端與伺服器併發連接非阻塞通信。首先,先瞭解下SocketServer模塊中可供使用的類:BaseServer:包含伺服器的核心功能與混合(mix-in)類掛鉤;這個類只用於派生,所以不會生成這個類的實例;可以考慮使用TCPServer和UDPServer
  • Warning messages: 1: In odbcDriverConnect("DSN=Rdata;UID=root") : [RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC 驅動程式管理器] 未發現數據源名稱並且未指定默
  • 在任何模式的編程過程中都無法避免副作用的產生。我們可以用F[A]這種類型模擬FP的運算指令:A是可能產生副作用的運算,F[_]是個代數數據類型ADT(Algebraic Data Type),可以實現函數組合(functional composition),我們可以不用理會A,先用F[_]來組合形成
  • 這段時間一直在學習flask框架,看到flask擴展中有一個mail插件,所以今天就給大家演示如果發郵件。 首先我註冊了一個163郵箱,需要開啟smtp功能,因為咱們python發送郵件經過的是smtp.163.com(網易的電子郵件伺服器)。 註冊好163郵箱,然後開啟smtp功能,如下圖所示:
  • 大家好,我是小Alan,很高興大家能夠看到這篇小小的技術點文章,這還是從參加工作以來,小Alan寫的第一篇博文。喜歡能夠給一些朋友帶來方便。 說到eclipse編碼格式的設置其實一個非常非常小的事情,但是在eclipse的開發使用中卻又是一個無法忽視的問題,它甚至會影響到我們的工作以及和團隊成員之間
  • 學習head first python一書的資料,Android、gae環境程式,sl4a_r3.apk,GoogleAppEngine-1.5.2.msi,GoogleAppEngine-1.5.2.msi等
  • 通過分析如下代碼,大致瞭解Disruptor的原理 1. 第2行代碼 EventFactory<LongEvent> eventFactory = new LongEventFactory(); 數據工廠類構造單個數據,disruptor使用此工廠類預分配數據。 2. 第5行代碼 final Dis
  • 沒看過前幾篇的可以猛戳這裡: underscore.js源碼解析(一) underscore.js源碼解析(二) underscore.js源碼解析(三) 本文解析的underscore.js版本是1.8.3 _.pluck的作用就是獲取數據對象中的相應屬性,然後存在數組當中返回 _.where就是
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...