以下是以资深软件开发工程师的视角,对“HTML DOM 教程”的专业回答。我将提供一个全面的 HTML DOM 教程,涵盖核心概念、操作方法、使用场景和实例,结合清晰的结构,包含目录、小标题、表格、代码示例和内部链接,确保内容技术准确、逻辑清晰且易于理解。回答基于截至 2025 年 3 月 17 日的最新 JavaScript 标准(ES2023+)和浏览器 DOM API。
HTML DOM 教程
目录
1. 引言
HTML DOM(文档对象模型)是 Web 开发的核心技术,通过 JavaScript 操作 DOM,开发者可以动态访问、修改网页内容、结构和行为。本教程将从基础到实践,带您掌握 DOM 的核心技能,适合初学者和进阶开发者。
2. HTML DOM 基础
2.1 什么是 DOM
- 定义:DOM 是 HTML 文档的对象表示,由浏览器解析为树形结构,提供编程接口。
- 作用:连接 HTML 和 JavaScript,实现动态交互。
- 示例:
<div>Hello</div>
- DOM 表示:
div
元素节点包含 “Hello” 文本节点。
2.2 DOM 树结构
- 结构:
- 根节点:
document
- 子节点:元素、文本、属性等
- 示例:
<html>
<body>
<p>Text</p>
</body>
</html>
- DOM 树:
document
└── <html>
└── <body>
└── <p>
└── "Text"
3. 核心操作
3.1 访问 DOM
方法:
方法 说明 示例getElementById()
通过 ID 获取元素 document.getElementById('id')
querySelector()
CSS 选择器获取第一个元素 document.querySelector('.class')
querySelectorAll()
获取所有匹配元素 document.querySelectorAll('p')
示例: const p = document.querySelector('p'); console.log(p.textContent); // "Text"
3.2 修改 DOM
方法:
操作 属性/方法 示例
修改内容 textContent
, innerHTML
el.textContent = 'New'
修改属性 setAttribute()
el.setAttribute('id', 'new')
修改样式 style
el.style.color = 'red'
示例: p.textContent = 'New Text'; p.style.color = 'blue';
3.3 事件处理
- 方法:
addEventListener()
:绑定事件监听器。- 事件对象:提供事件信息(如
event.target
)。 - 示例:
p.addEventListener('click', (e) => { e.target.textContent = 'Clicked!'; });
3.4 节点操作
方法:
操作 方法 示例
创建节点 createElement()
document.createElement('div')
添加节点 appendChild()
parent.appendChild(child)
删除节点 removeChild()
parent.removeChild(child)
遍历节点 childNodes
, children
node.children
示例: const div = document.createElement('div'); div.textContent = 'New Div'; document.body.appendChild(div);
4. 完整实例 4.1 动态内容更新
- 目的:点击按钮更新内容。
- 实例:
<!DOCTYPE html> <html> <body> <p id="text">初始文本</p> <button onclick="updateText()">更新</button> <script> function updateText() { const p = document.getElementById('text'); p.innerHTML = '<strong>新文本</strong>'; } </script> </body> </html>
- 说明:修改为加粗文本。
- 目的:处理输入并显示。
- 实例:
<!DOCTYPE html> <html> <body> <input id="input" placeholder="输入内容"> <button onclick="showInput()">提交</button> <p id="result"></p> <script> function showInput() { const input = document.getElementById('input'); const result = document.getElementById('result'); result.textContent = `你输入了: ${input.value}`; } </script> </body> </html>
- 说明:显示用户输入。
- 目的:添加和删除节点。
- 实例:
<!DOCTYPE html> <html> <body> <ul id="list"> <li>项目 1</li> </ul> <button onclick="addItem()">添加</button> <button onclick="removeItem()">删除</button> <script> function addItem() { const ul = document.getElementById('list'); const li = document.createElement('li'); li.textContent = `项目 ${ul.children.length + 1}`; ul.appendChild(li); } function removeItem() { const ul = document.getElementById('list'); if (ul.lastChild) ul.removeChild(ul.lastChild); } </script> </body> </html>
- 说明:动态管理列表。
- 最佳实践:
- 性能:缓存 DOM 查询(如
const el = document.getElementById()
)。 - 安全性:用
textContent
替代innerHTML
(避免 XSS)。 - 事件:用
addEventListener
而非内联事件。 - 调试:用 Chrome DevTools 检查 DOM 和事件。
- 工具:
- 编辑器:VS Code(支持 IntelliSense)。
- 浏览器:Chrome(开发者工具)。
- 文档:参考 MDN DOM。
- 结构:包含目录、带锚点的小标题、表格和代码示例,逻辑清晰。
- 实用性:实例覆盖主要操作,可直接运行。
- 内部链接:通过
<a href="#ID">
跳转,如 HTML DOM 基础。 - 出站链接:嵌入正文,指向权威资源。
发表回复