DOM(文档对象模型)深度解析
DOM 是 HTML/XML 文档的树形结构表示 ,提供了一套让 JavaScript 动态操作网页内容、结构和样式的接口。
一、DOM 核心概念
1. 节点(Node)类型
类型
值
说明
示例
ELEMENT_NODE
1
元素节点
<div>
, <p>
TEXT_NODE
3
文本节点
元素内的文字
COMMENT_NODE
8
注释节点
<!-- comment -->
DOCUMENT_NODE
9
文档根节点
document
DOCUMENT_TYPE_NODE
10
文档类型声明节点
<!DOCTYPE html>
2. DOM 树结构
<! DOCTYPE html >
< html>
< head>
< title> DOM示例</ title>
</ head>
< body>
< h1> 标题</ h1>
< p> 段落</ p>
</ body>
</ html>
对应的 DOM 树 :
DOCUMENT_NODE (document)
├── DOCUMENT_TYPE_NODE (html)
└── ELEMENT_NODE (html)
├── ELEMENT_NODE (head)
│ └── ELEMENT_NODE (title)
│ └── TEXT_NODE ("DOM示例")
└── ELEMENT_NODE (body)
├── COMMENT_NODE ("主内容")
├── ELEMENT_NODE (h1)
│ └── TEXT_NODE ("标题")
└── ELEMENT_NODE (p)
└── TEXT_NODE ("段落")
二、DOM 操作 API
1. 节点查询
方法
返回内容
示例
document.getElementById()
单个元素
document.getElementById('app')
document.querySelector()
首个匹配元素
document.querySelector('.btn')
document.querySelectorAll()
静态 NodeList
document.querySelectorAll('li')
element.getElementsByTagName()
动态 HTMLCollection
div.getElementsByTagName('p')
2. 节点遍历
属性
说明
示例
parentNode
父节点
node.parentNode
childNodes
所有子节点
node.childNodes
firstChild
/ lastChild
首/末子节点
node.firstChild
previousSibling
/ nextSibling
前/后兄弟节点
node.previousSibling
children
仅元素子节点
node.children
3. 节点修改
const newDiv = document. createElement ( 'div' ) ;
const newText = document. createTextNode ( 'Hello' ) ;
parent. appendChild ( newDiv)