1. 程式人生 > 其它 >再談BOM和DOM(2):DOM節點層次/屬性/選擇器/節點關係/操作詳解

再談BOM和DOM(2):DOM節點層次/屬性/選擇器/節點關係/操作詳解

DOM模型將整個文件看成一個樹形結構,並用document物件表示該文件。NodeType屬性來表明節點型別,element是包含在node裡的,它的nodeType是1,Document文件物件元素查詢,DOM節點關係說明,元素物件操作

DOM模型將整個文件(XML文件和HTML文件)看成一個樹形結構,並用document物件表示該文件。

根據W3C DOM規範,DOM是HTML與XML的應用程式設計介面(API),DOM將整個頁面對映為一個由層次節點組成的檔案。有1級、2級、3級共3個級別。

DOM規定文件中的每個成分都是一個節點(Node),可以說HTML文件是由節點構成的集合,常見DOM節點有:

  • 文件節點(Document):代表整個文件

  • 元素節點(Element):文件中的一個標記

  • 文字節點(Text):標記中的文字

  • 屬性節點(Attr):代表一個屬性,元素才有屬性

DOM節點型別

NodeType屬性來表明節點型別,下面列舉12中節點型別

節點型別 描述
1 Element 代表元素
2 Attr 代表屬性
3 Text 代表元素或屬性中的文字內容。
4 CDATASection 代表文件中的 CDATA 部分(不會由解析器解析的文字)。
5 EntityReference 代表實體引用。
6 Entity 代表實體。
7 ProcessingInstruction 代表處理指令。
8 Comment 代表註釋。
9 Document 代表整個文件(DOM 樹的根節點)。
10 DocumentType 向為文件定義的實體提供介面
11 DocumentFragment 代表輕量級的 Document 物件,能夠容納文件的某個部分
12 Notation 代表 DTD 中宣告的符號。

DOM節點關係

nodeType 返回節點型別的數字值(1~12)
nodeName 元素節點:標籤名稱(大寫)、屬性節點:屬性名稱、文字節點:#text、文件節點:#document
nodeValue

文字節點:包含文字、屬性節點:包含屬性、元素節點和文件節點:null

hasChildNodes 包含一個或多個節點時返回true
contains 如果是後代節點返回true
isEqualNode 兩個節點引用的是同一個物件:傳入節點與引用節點的引用為同一個物件返回true
isSameNode 指的是兩個節點是否是同一型別,具有相等attributes/childNodes等
compareDocumentPostion 確定節點之間的各種關係
parentNode 父節點
parentElement 父節點標籤元素
childNodes 所有子節點
children 第一層子節點
firstChild 第一個子節點,Node 物件形式
firstElementChild 第一個子標籤元素
lastChild 最後一個子節點
lastElementChild 最後一個子標籤元素
previousSibling 上一個兄弟節點
previousElementSibling 上一個兄弟標籤元素
nextSibling 下一個兄弟節點
nextElementSibling 下一個兄弟標籤元素
childElementCount 第一層子元素的個數(不包括文字節點和註釋)
ownerDocument 指向整個文件的文件節點

節點與元素的區別

element是包含在node裡的,它的nodeType是1

parentElement匹配的是parent為element的情況,而parentNode匹配的則是parent為node的情況。

當父節點的nodeType不是1,即不是element節點的話,它的parentElement就會是null

Document文件物件元素查詢

BOM核心為window,DOM核心為document(文件物件)

獲取Element物件

getElementById()

一個引數:元素標籤的ID
getElementsByTagName() 一個引數:元素標籤名
getElementsByName() 一個引數:name屬性名
getElementsByClassName() 一個引數:包含一個或多個類名的字串
querySelector() 接收CSS選擇符,返回匹配到的第一個元素,沒有則null
querySelectorAll() 接收CSS選擇符,返回一個數組,沒有則返回[]

元素物件ELEMENT操作

所有DOM物件都可以被認為是一個節點,除了CURD DOM樹(appendChild/removeChild/replaceChild)外,還有其他操作

nodeName 訪問元素的標籤名
tagName 訪問元素的標籤名
createElement() 建立節點
appendChild() 末尾新增節點,並返回新增節點
insertBefore() 參照節點之前插入節點,兩個引數:要插入的節點和參照節點
insertAfter() 參照節點之後插入節點,兩個引數:要插入的節點和參照節點
replaceChild() 替換節點,兩個引數:要插入的節點和要替換的節點(被移除)
removeChild() 移除節點
cloneNode() 克隆,一個布林值引數,true為深拷貝,false為淺拷貝
importNode() 從文件中複製一個節點,兩個引數:要複製的節點和布林值(是否複製子節點)
insertAdjacentHTML()

插入文字,兩個引數:插入的位置和要插入文字

  • "beforebegin",在該元素前插入

  • "afterbegin",在該元素第一個子元素前插入

  • "beforeend",在該元素最後一個子元素後面插入

  • "afterend",在該元素後插入

節點屬性attributes

attributes

獲取所有標籤屬性
getAttribute() 獲取指定標籤屬性
setAttribute() 設定指定標籤屬
removeAttribute() 移除指定標籤屬
createAttribute 建立屬性

參考文章:

ECMAScript、BOM、DOM(核心、瀏覽器物件模型與文件物件模型)https://www.cnblogs.com/best/p/8028168.html

JavaScript學習總結(三)BOM和DOM詳解https://segmentfault.com/a/1190000000654274

Javascript操作BOM和DOM詳解(1)https://blog.csdn.net/openbox2008/article/details/85260063

JavaWeb學習總結:JavaScript(BOM和DOM) https://blog.csdn.net/weixin_42384085/article/details/99807198

HTML DOM Event 物件https://www.w3school.com.cn/jsref/dom_obj_event.asp

XML DOM - Element 物件https://www.w3school.com.cn/xmldom/dom_element.asp

JAVAScript中DOM與BOM的差異分析 https://www.cnblogs.com/fjner/p/5892325.html

轉載本站文章《再談BOM和DOM(2):DOM節點層次/屬性/選擇器/節點關係/操作詳解》,
請註明出處:https://www.zhoulujun.cn/html/webfront/SGML/xml/2020_0317_8347.html