DOM Node 基础概念
· 4 min read
DOM 里 Node 是基类,Element 只是 7 种节点之一——文本、注释、文档都是 Node 但 不是 Element。
- 节点类型:日常打交道最多是 Element / Text / Comment / Document 四种
- 三大属性:
nodeName、nodeValue、textContent各管一摊 - nodeType:用
Node.ELEMENT_NODE常量,禁硬编码数字 - 父子关系:
parentElement只对 Element 父节点有值 - NodeList:实时的 集合,遍历时增删子节点会变化
七种节点类型
DOM 规范定义了 7 种节点,全部继承自 Node 接口:
| 类型 | nodeType | 含义 | 典型来源 |
|---|---|---|---|
| Document | 9 | 整个文档根 | document |
| DocumentType | 10 | <!DOCTYPE> 声明 | document.doctype |
| Element | 1 | HTML 标签 | document.querySelector(...) |
| Attr | 2 | 元素属性(已废弃) | — |
| Text | 3 | 标签之间的文本 | .firstChild |
| Comment | 8 | <!-- --> 注释 | 模板里的批注 |
| DocumentFragment | 11 | 文档片段 | document.createDocumentFragment() |
提示:Attr 节点在 DOM Level 4 已被标记为废弃,不要再用 .getAttributeNode()。属性读写走 getAttribute / setAttribute / element.attributes。
日常 90% 的代码只跟 Element、Text、Comment、Document 四种打交道,其他三种基本只在底层 API 里出现。
三大节点属性
nodeName、nodeValue