学习笔记:DOM
什么是 DOM
DOM 是文档对象模型(Document Object Model)的缩写,是一种表示和操作 HTML、XML 文档的标准 API。通过 DOM,我们可以动态地创建、修改、删除 HTML 元素和属性,以及响应用户的事件。
DOM 的基本概念
节点
DOM 中的所有元素和文本都被称为节点(Node)。节点有多种类型,最常见的有:
- 元素节点(Element)
- 文本节点(Text)
- 属性节点(Attribute)
- 注释节点(Comment)
树形结构
DOM 中的所有节点都形成了一棵树形结构,称为文档树(Document Tree)。每个节点都有一个父节点和零个或多个子节点,顶层节点是文档节点(Document)。
节点属性
DOM 中的每个节点都有可能拥有属性(Attribute),属性是键值对形式的一组数据,可以用来描述节点的各种特征,例如元素的 id、class、href 等等。
节点操作
DOM 提供了一些方法和属性来操作节点,最常见的操作包括:
- 创建新节点:createElement、createTextNode、createAttribute 等等。
- 添加、删除、替换节点:appendChild、insertBefore、removeChild、replaceChild 等等。
- 查找节点:getElementById、getElementsByClassName、getElementsByTagName 等等。
- 修改节点属性和内容:setAttribute、getAttribute、innerHTML、innerText 等等。
- 响应用户事件:addEventListener、removeEventListener 等等。
DOM 的实例
创建新节点
javascriptCopy Codeconst newElement = document.createElement('div');
newElement.innerText = 'Hello, World!';
document.body.appendChild(newElement);
添加、删除、替换节点
javascriptCopy Codeconst oldElement = document.getElementById('old');
const newElement = document.createElement('div');
newElement.innerText = 'New Content!';
oldElement.parentNode.replaceChild(newElement, oldElement);
查找节点
htmlCopy Code<ul id="list">
<li class="item">Item 1</li>
<li class="item">Item 2</li>
<li class="item">Item 3</li>
</ul>
javascriptCopy Codeconst list = document.getElementById('list');
const items = list.getElementsByClassName('item');
for (let i = 0; i < items.length; i++) {
console.log(items[i].innerText);
}
修改节点属性和内容
htmlCopy Code<a id="link" href="#">Click Me</a>
javascriptCopy Codeconst link = document.getElementById('link');
link.setAttribute('href', 'https://www.google.com/');
link.innerText = 'Google';
响应用户事件
htmlCopy Code<button id="btn">Click Me</button>
javascriptCopy Codeconst btn = document.getElementById('btn');
btn.addEventListener('click', function() {
alert('Button Clicked!');
});