【瀏覽器】聊聊DOM

【瀏覽器】聊聊DOM

博客說明

文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗彙總,如有什麼地方侵權,請聯繫本人刪除,謝謝!

說明

作爲前端開發,在以前的工作中大多是和DOM打交道,到了現在,大多數前端工程師都是和Vue打交道了。讓Vue去和DOM交流。這並非是諷刺,只是說明這個事實,同時也說明了Vue的強大。

但,想要更深的瞭解前端,需要打開Vue的保護傘,看看DOM,更甚的是,熟悉DOM。走向底層,同時也走向高層!

沒準下一代“Vue”的開發者不姓尤:laughing:。

什麼是DOM?

首先來介紹一下,什麼是DOM,這個臭了的問題,還是在這裏得以繼續延伸,我很抱歉,但是還是不能去掉這個過程:grimacing:。

聽聽W3C的

DOM全程是文檔對象模型(Document Object Model),是一項 W3C (World Wide Web Consortium) 標準。它主要定義了訪問文檔的標準:

W3C 文檔對象模型(DOM)是中立於平臺和語言的接口,它允許程序和腳本動態地訪問、更新文檔的內容、結構和樣式。

W3C DOM 標準被分爲 3 個不同的部分:

  • Core DOM - 所有文檔類型的標準模型
    • Document:文檔對象

    • Element:元素對象

    • Attribute:屬性對象

    • Text:文本對象

    • Comment:註釋對象

    • Node:節點對象,其他5個的父對象

  • XML DOM - XML 文檔的標準模型
  • HTML DOM - HTML 文檔的標準模型
聽聽總結的

DOM就是將標記語言文檔的各個組成部分,封裝爲對象。然後開發者(前端切圖仔)就可以使用這些對象,對標記語言文檔進行CRUD的動態操作。

什麼是HTML DOM?

當網頁被加載時,瀏覽器會創建頁面的文檔對象模型(Document Object Model)。注意,通過 HTML DOM,JavaScript 能夠訪問和改變 HTML 文檔的所有元素。

HTML DOM 是 HTML 的標準對象模型和編程接口。它定義了:

  • 作爲對象的 HTML 元素
  • 所有 HTML 元素的屬性
  • 訪問所有 HTML 元素的方法
  • 所有 HTML 元素的事件

換言之:HTML DOM 是關於如何獲取、更改、添加或刪除 HTML 元素的標準

總結

咱們熟悉的總結又來了:relaxed:,這次不多說,HTML DOM就是一套對HTML元素的CURDCURD在看各位沒有不熟悉,沒有不興奮的吧。

Document:文檔對象

Document對象的屬性和方法:HTML DOM Document 對象

創建(獲取)

在html dom模型中可以使用window對象來獲取,例如在瀏覽器中輸入document,就會返回一個文檔對象。

window.document
document

document案例

Element對象

Element 對象可以擁有類型爲元素節點、文本節點、註釋節點的子節點。

獲取Element對象的方法

getElementById():根據id屬性值獲取元素對象。id屬性值一般唯一

getElementsByTagName():根據元素名稱獲取元素對象們。返回值是一個數組

getElementsByClassName():根據Class屬性值獲取元素對象們。返回值是一個數組

getElementsByName():根據name屬性值獲取元素對象們。返回值是一個數組

Element屬性和方法

乍一看實在是太多了,多得我那是根本不想數,但是又不想直接CV在此。

屬性 / 方法 描述
element.accessKey 設置或返回元素的快捷鍵。
element.appendChild() 向元素添加新的子節點,作爲最後一個子節點。
element.attributes 返回元素屬性的 NamedNodeMap。
element.childNodes 返回元素子節點的 NodeList。
element.className 設置或返回元素的 class 屬性。

給個開頭,再把完全的地址貼出來,HTML DOM Element 對象

Attr對象

在 HTML DOM 中,Attr 對象表示 HTML 屬性,HTML 屬性始終屬於 HTML 元素。

操作方法

removeAttribute():刪除屬性

setAttribute():設置屬性

Attr的屬性和方法

HTML DOM Attr 對象

DOM 4 警告!

在 W3C DOM Core 中,Attr (attribute) 對象從 Node 對象繼承所有屬性和方法。

在 DOM 4 中,Attr 對象不再從 Node 繼承。爲了保證未來的代碼安全,應該避免在屬性對象上使用節點對象的屬性和方法。

NamedNodeMap 對象

在 HTML DOM 中,NamedNodeMap 對象表示元素屬性節點的無序集合,NamedNodeMap 中的節點可通過名稱或索引(數字)來訪問。

Text對象

Text 對象代表 HTML 表單中的文本輸入域,該元素可創建一個單行的文本輸入字段。當用戶編輯顯示的文本並隨後把輸入焦點轉移到其他元素的時候,會觸發 onchange 事件句柄。

Text的屬性和方法

HTML DOM Input Text 對象

Comment對象

Comment是註釋對象,在對HTML編碼時,總會有一些註釋,但是註釋的代碼,衆所周知,是沒有被執行的。在HTML中,它就存放在Comment對象中。

createComment() 方法可創建註釋節點,一般對這個對象的操作比較的少,也沒啥地址可貼的了。

最後說的話

在寫這篇文章的時候,我一直在思考有沒有必要寫這樣的一篇文章,其實感覺寫這樣的文章很難,儘管大多數是一些標準和協議,但往往就是這些標準和協議難以突破,同時自己也在慢慢積累與沉澱,能沉下心寫,甚至抄點基礎的東西,補足那個圓的一節,感覺會很踏實很多。

本文也是第二次擴寫,從500到1500:relieved:。有機會,或者再有累計的話再擴寫吧,到時希望在這些標準之上有所突破哈。

感謝

萬能的網絡

菜鳥教程w3school

以及勤勞的自己,個人博客GitHub測試GitHub

公衆號-歸子莫,小程序-小歸博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章