术语图鉴/前端基础/DOM
←→切换Esc返回

DOM Document Object Model

你可能会说

我想用代码动态改变页面上某个元素的内容和样式。

DOM(文档对象模型)是浏览器把 HTML 解析后生成的树状对象结构,JavaScript 通过它来读取和操控页面。

浏览器把 HTML 变成一棵「树」,每个标签是树上的一个节点。JavaScript 通过操作这棵树来改变页面——增删改查任何元素。

也常被叫作文档对象模型Document Object Model节点树

生活类比

像一棵家谱树:html 是祖宗,body 是儿子,div 是孙子……JavaScript 就是那个能修改家谱的人。

🎮 动手试试

👇 动态增删改 DOM 元素

// DOM 树实时状态
<h2>标题</h2>
<p>这是一段文字</p>
选择题选择一个你认为最合适的答案

document.querySelector('.box') 返回什么?

你可以这样告诉 AI

帮我写 JS:点击按钮后,找到 id 为 result 的元素,把文字改成「加载完成」,同时加上绿色高亮样式。

容易混淆?这样区分

DOM Document Object Model≠
HTML 源码 HTML Source

HTML 是你写的静态文件,DOM 是浏览器解析后在内存中构建的活对象树——可以被 JS 动态修改。

DOM Document Object Model≠
虚拟 DOM Virtual DOM

虚拟 DOM 是 React 在内存中的轻量镜像,真实 DOM 是浏览器实际渲染的对象树。

什么时候用

动态更新页面

不刷新页面就改变内容、样式、结构

响应用户操作

点击、输入后即时反馈

什么时候不用

框架项目中

用 React/Vue 时不直接操作 DOM,框架帮你管理

大量节点更新

频繁操作真实 DOM 性能差,考虑虚拟 DOM 或批量更新

组成结构 · Anatomy

1
节点Node

树上的每个元素(标签、文本、注释)都是一个节点

2
查询Query

document.querySelector('.class') 找到目标元素

3
修改Manipulate

改 textContent、style、classList、innerHTML

4
创建/删除Create/Remove

createElement + appendChild 添加,remove() 删除

典型使用场景

动态表单
告诉 AI「点击'添加'按钮时,动态插入一行输入框,每行有删除按钮」
实时搜索
告诉 AI「输入框每次输入时,筛选列表并更新 DOM 只显示匹配项」

延伸阅读