Node
派生自Object
,它包括Element
、Text
、Document(html)
、Coment
,若是一個 API 是Node
的,那它的子類也擁有。html
DOM的最小組成單位就是節點(node)。DOM樹就是由不一樣類型的節點組成。每一個節點能夠當作是DOM樹上的葉子。node
在DOM
中,節點的類型一共有7
種Document
:整個文檔樹的頂層節點;DocumentType
:dotype
標籤(好比:<!DOCTYPE html>
)Element
:網頁的各類HTML
標籤(好比:<body>
<h>
<a>
<div>
)Attribute
:網頁元素的屬性(好比:id="id"
class="class"
type="text"
)Text
:標籤之間或標籤包含的文本Comment
:註釋DocumentFragment
:文檔片斷數組
屬性:
DOM API 記住下面的英文單詞後各自組合就是 DOM 提供的 APIapp
child/children/parent node first/last next/previous sibling/siblings type value/text/content inner/outer element
innerText
添加文本,會覆蓋原有文本childNodes
獲取全部的子元素(會獲取到回車)children
獲取全部的子標籤,沒有文本firstChild
第一個元素,會有文本lastChild
最後一個元素,會有文本firstElementChild
,第一個標籤,沒有文本previousSibling
上一個元素,會有文本nextSibling
下一個元素,會有文本previousElementSibling
下一個標籤,沒有文本nextSibling
下一個元素,會有文本dom
nodeName
獲取節點名稱都是大寫,svg
是特例,小寫nodeType
獲取節點類型,1是元素節點,3是文本節點,11是DocumentFragment編輯器
textContent
會獲取全部元素的內容,包括<script>
、style
,而innerText
不會svg
方法:appendChild()
添加一個子元素cloneNode()
接受參數true
,深複製,有多少複製多少;不傳參數,只複製最外面的一個contains()
表示一個元素是否包含另外一個元素hasChildNodes()
表示一個元素是否有子元素,返回BooleaninsertBefore()
把一個元素查到另外一個元素前面isEqualNode()
相等,若是是兩個同樣的元素就是true
isSameNode()
相同,若是是同一個元素就是true
removeChild()
移除子元素,但依然在內存中,只是從頁面中移除replaceChild()
交換一個子元素normalize()
// 常規化this
var wrapper = document.createElement("div"); wrapper.appendChild( document.createTextNode("Part 1 ") ); wrapper.appendChild( document.createTextNode("Part 2 ") ); // At this point, wrapper.childNodes.length === 2 // wrapper.childNodes[0].textContent === "Part 1 " // wrapper.childNodes[1].textContent === "Part 2 " wrapper.normalize(); // Now, wrapper.childNodes.length === 1 // wrapper.childNodes[0].textContent === "Part 1 Part 2 "
屬性:body
獲取body
元素characterSet
獲取字符編碼childElementCount
子標籤的數量,無符號長整型數字children
doctype
documentElement
html元素domain
fullscreen
head
hidden
images
links
location
onxxxxxxxxx
origin
plugins
檢測插件readyState
referrer
引薦scripts
scrollingElement
獲取正在滾動的元素styleSheets
title
visibilityState
頁面是否被顯示,正在看頁面,返回true
編碼
方法:close()
關閉文檔createDocumentFragment()
createElement()
createTextNode()
建立一個文本節點execCommand()
寫一個富文本編輯器時能夠用到exitFullscreen()
退出全屏getElementById()
getElementsByClassName()
getElementsByName()
經過name屬性getElementsByTagName()
經過標籤名getSelection()
回去用戶選中的文本hasFocus()
用戶是否Focus到上面open()
querySelector()
經過選擇器獲取,返回一個選擇器(數組的形式,不過是僞數組)querySelectorAll()
經過選擇器獲取,返回因此選擇器(數組的形式,不過是僞數組)write()
寫writeln()
寫一行插件
屬性:innertext
用戶輸入啥就是啥innerHTML
若是用戶輸入標籤名會寫入HTML
用於處理子節點(包含但不限於Element
子節點)。Element
節點、DocumentType
節點和CharacterData
接口,部署了ChildNode
接口。凡是這三類節點(接口),均可以使用下面四個方法。
(1)remove()
移除當前節點
(2)before()
, (3)after()
, (4)replaceWith()