JavaScript: DOM 简介

最后更新:2026-10-13

DOM 是 JavaScript 操作网页的唯一桥梁。没有 DOM,JS 就是一门纯计算语言;有了 DOM,JS 就能"看见"页面、修改页面、让页面活起来。

相关 DOM 方法:document.getElementById() document.querySelector() document.createElement() querySelectorAll class

1. DOM 树与 document 对象

DOM 全称 Document Object Model(文档对象模型)。浏览器加载 HTML 后,不是把 HTML 当纯文本存着,而是把它翻译成一棵对象树——每个 HTML 标签变成一个对象(叫节点),标签之间的嵌套关系变成树形的父子关系。

你可以把 DOM 想象成一颗倒着长的树:最上面是树根(document),往下分出枝干(html、head、body),再往下是更细的枝叶(div、p、span...)。

(2) DOM 树的结构

一个简单 HTML 页面的 DOM 树大致如下:

HTML
document
  └── html
       ├── head
       │    ├── meta
       │    └── title
       └── body
            ├── h1
            ├── p
            └── div
                 └── span

(3) 节点类型

DOM 中有三种核心节点类型:

节点类型 说明 nodeType 值
元素节点 HTML 标签,如 p、div 1
文本节点 标签内的文字内容 3
属性节点 标签的属性,如 class、id 2(已不推荐使用)
HTML
<p class="intro">Hello World</p>

上面这一行中:<p> 是元素节点,class="intro" 是属性节点,Hello World 是文本节点。日常开发中,你操作最多的就是元素节点。

(4) document 对象

document 是 DOM 的入口,浏览器自动提供这个全局对象。通过它可以:

(5) DOM 的作用

JS 本身不能"看见"网页——它只能做计算。DOM 就是那双"眼睛"和"手":

没有 DOM,JS 和 HTML 就是两个互不相干的东西。DOM 把它们连在了一起。


▶ 示例:查看 DOM 结构

▶ 试一试

▶ 示例:document 对象探索

▶ 试一试

▶ 示例:节点类型判断

▶ 试一试

相关 DOM 方法:document.getElementById() document.querySelector() document.createElement() querySelectorAll class

❓ 常见问题

Q DOM 是 JavaScript 的一部分吗?
A 不是。DOM 是 W3C 制定的标准,JavaScript 只是提供了操作 DOM 的 API。Node.js 没有 DOM,因为它不是浏览器环境。把 DOM 和 JS 混为一谈是新手常见误区。
Q 为什么 childNodes 里会有空文本节点?
A HTML 中的换行和缩进在 DOM 中会被解析为文本节点。比如标签之间的换行就是一个文本节点(内容是换行符)。如果只想获取元素节点,用 children 代替 childNodes。
Q 修改 DOM 会影响页面性能吗?
A 会。每次修改 DOM 都可能触发浏览器的重新布局(reflow)和重绘(repaint),频繁操作 DOM 是性能杀手。最佳实践是:先在内存中拼好所有修改,最后一次写入 DOM。

📖 小节

📝 作业

  1. 打开浏览器开发者工具(F12),在 Console 中输入 console.dir(document),观察 document 对象有哪些属性和方法,列出 5 个你认识或觉得有意思的。
  2. 写一段代码:获取当前页面的 body 元素,打印它的 childElementCount(子元素个数),然后用 children 遍历所有子元素,打印每个子元素的标签名。
  3. 解释"元素节点"和"文本节点"的区别。给定 <div>Hello <b>World</b></div>,画出它的节点树结构,标明每个节点的类型。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏