Node
派生自Object
,它包括Element
、Text
、Document(html)
、Coment
,如果一个 API 是Node
的,那它的子类也拥有。
DOM节点
DOM的最小组成单位就是节点(node)。DOM树就是由不同类型的节点组成。每个节点可以看成是DOM树上的叶子。
在DOM
中,节点的类型一共有7
种Document
:整个文档树的顶层节点;DocumentType
:dotype
标签(比如:<!DOCTYPE html>
)Element
:网页的各种HTML
标签(比如:<body>
<h>
<a>
<div>
)Attribute
:网页元素的属性(比如:id="id"
class="class"
type="text"
)Text
:标签之间或标签包含的文本Comment
:注释DocumentFragment
:文档片段
Node 的接口
属性:
DOM API 记住下面的英文单词后各自组合就是 DOM 提供的 API
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
下一个元素,会有文本
nodeName
获取节点名称都是大写,svg
是特例,小写nodeType
获取节点类型,1是元素节点,3是文本节点,11是DocumentFragment
textContent
会获取所有元素的内容,包括<script>
、style
,而innerText
不会
方法:appendChild()
添加一个子元素cloneNode()
接受参数true
,深复制,有多少复制多少;不传参数,只复制最外面的一个contains()
表示一个元素是否包含另一个元素hasChildNodes()
表示一个元素是否有子元素,返回BooleaninsertBefore()
把一个元素查到另一个元素前面isEqualNode()
相等,如果是两个一样的元素就是true
isSameNode()
相同,如果是同一个元素就是true
removeChild()
移除子元素,但依然在内存中,只是从页面中移除replaceChild()
交换一个子元素normalize()
// 常规化
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 "
Document接口是Document特有的,window.document所符合的就是这个接口,document是html的父元素,但html还是根元素
属性: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()
写一行
Elelment
属性:innertext
用户输入啥就是啥innerHTML
如果用户输入标签名会写入HTML
ChildNode接口
用于处理子节点(包含但不限于Element
子节点)。Element
节点、DocumentType
节点和CharacterData
接口,部署了ChildNode
接口。凡是这三类节点(接口),都可以使用下面四个方法。
(1)remove()
移除当前节点
(2)before()
, (3)after()
, (4)replaceWith()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。