DOM(Document Object Model,文档对象模型)是浏览器将 HTML 文档解析后生成的树形结构。JavaScript 通过 DOM API 可以查询、修改、创建和删除页面元素,实现动态交互。
// 单个元素
const el = document.getElementById('myId');
const el = document.querySelector('.myClass');
// 多个元素
const items = document.querySelectorAll('.item');
items.forEach(item => console.log(item));
// 文本内容
el.textContent = '新文本'; // 纯文本(安全)
el.innerHTML = '<b>加粗</b>'; // HTML 内容(慎用)
// 属性
el.setAttribute('href', 'https://example.com');
el.getAttribute('href');
// 速写属性
el.id = 'newId';
el.checked = true;
// 内联样式
el.style.color = 'red';
el.style.fontSize = '16px';
// 操作 class
el.classList.add('active');
el.classList.remove('hidden');
el.classList.toggle('open');
el.classList.contains('active'); // true/false
// 创建
const div = document.createElement('div');
div.textContent = '新元素';
// 插入
parent.appendChild(div); // 末尾追加
parent.append(div, '文本'); // 追加多个
parent.prepend(div); // 开头插入
// 删除
el.remove();
btn.addEventListener('click', function(e) {
console.log('点击了', e.target);
});
// 常见事件:click, input, submit, focus, blur, keydown, scroll
将事件绑定在父元素上,利用冒泡机制处理子元素事件:
document.querySelector('ul').addEventListener('click', (e) => {
if (e.target.tagName === 'LI') {
console.log('点击了:', e.target.textContent);
}
});
document.querySelector('.tabs').addEventListener('click', (e) => {
const tab = e.target.closest('.tab');
if (!tab) return;
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
tab.classList.add('active');
const id = tab.dataset.tab;
document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
document.querySelector(`[data-content="${id}"]`).classList.add('active');
});
本篇介绍了 DOM 的查询、修改、创建、删除操作,以及事件监听和事件委托。DOM 操作是前端交互的核心,掌握了它就能让静态页面「活」起来。