做一个"用户列表"页面,把 DOM 彻底搞懂

0 阅读2分钟

大家好,这次来分享DOM,这是在我写了一个小项目user chat之后,提出的一些个人理解,和大家分享一下,完整代码可以在ai_doubao_zzh: 走向AGI,走向豆包里看到

一、DOM 是什么?

HTML 是文本,浏览器读完之后在内存里面把他变成一颗“对象树”,这棵树就叫做DOM。

image.png 左边是HTML源代码,右边是它的DOM树

  • document:整个树的根,JS全局自带,不用声明。
  • querySelector:从根出发,用选择器查找。
  • innerHTML:找到节点后,修改它的内容。

二、为什么要使用DOM?

  • 不用DOM,操作HTML只能当初字符串来拼接,就像在豆腐上雕刻,又慢又容易出错

HTML结构稍微变化一下,所有的replace的逻辑都要重写

image.png

  • 使用DOM,JS可以像操作对象一样,操作页面,就像搭积木,又快又精准

image.png

三、document 对象 -- JS访问页面的唯一入口

  • document.documentELement 根节点

  • document.body 页面节点

  • document.querySelector() // → 在整棵树上用选择器找节点

const oBody = document.querySelector('.table tbody');
//    ↑ 前缀 o 表示这是个 DOM 对象(匈牙利命名法)

四、操作节点

改内容

oBody.innerHTML += `
    <tr>
        <td>${user.id}</td>
        <td>${user.name}</td>
    </tr>
`;

innerHTML 会解析 HTML 标签。如果只是纯文本,用 textContent 更安全:

oBody.textContent = '纯文本,标签不会生效';

改样式

oBody.style.display = 'none';   // 隐藏
oBody.style.color = 'red';      // 改文字颜色

五、完整数据流

index.html 被浏览器加载
        ↓
浏览器解析 HTML → 构建 DOM 树
        ↓
<script src="common.js"> 开始执行
        ↓
document.querySelector('.table tbody')   ← 在 DOM 树上找节点
        ↓
fetch → then → JSON.parse               ← 从后端拿数据
        ↓
oBody.innerHTML += `...`                ← 修改 DOM 树
        ↓
浏览器检测 DOM 变化 → 自动重绘页面 → 用户看到新内容

这就是 DOM 编程的完整闭环:拿到节点 → 拿到数据 → 改节点内容 → 页面自动更新。

总结

  • DOM 就是 HTML 在内存中的对象树,JS通过它来操作页面
  • DOM 让本来脆弱的页面,变成了可轻松编程的对象