JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互,动态地修改网页内容和样式。而实现这一功能的核心就是 DOM(文档对象模型)。
DOM 是文档对象模型(Document Object Model)的缩写。它将 HTML 或 XML 文档转换成一个树形结构,JavaScript 可以访问和操作这棵树上的每一个节点,从而实现对网页的动态控制。
DOM 树的结构是层级的,每个节点都有其父节点、子节点和兄弟节点。
let element = document.getElementById("myElement");
console.log(element); // 输出 id 为 "myElement" 的元素
let paragraphs = document.getElementsByTagName("p");
for (let i = 0; i < paragraphs.length; i++) {
console.log(paragraphs[i]); // 输出所有 p 元素
}
let elements = document.getElementsByClassName("myClass");
for (let i = 0; i < elements.length; i++) {
console.log(elements[i]); // 输出所有 class 包含 "myClass" 的元素
}
let element = document.querySelector("#myElement > p");
console.log(element); // 输出 id 为 "myElement" 元素下的第一个 p 元素
let elements = document.querySelectorAll(".myClass");
elements.forEach(element => console.log(element)); // 输出所有 class 包含 "myClass" 的元素
let element = document.getElementById("myElement");
element.textContent = "新的文本内容"; // 设置文本内容
console.log(element.textContent); // 输出 "新的文本内容"
let element = document.getElementById("myElement");
element.innerHTML = "<p>新的 HTML 内容</p>"; // 设置 HTML 内容
let element = document.getElementById("myElement");
let src = element.getAttribute("src");
console.log(src); // 输出 src 属性的值
let element = document.getElementById("myElement");
element.setAttribute("src", "new_image.jpg"); // 设置 src 属性的值
let element = document.getElementById("myElement");
element.removeAttribute("src"); // 移除 src 属性
let element = document.getElementById("myElement");
element.style.color = "red"; // 设置颜色为红色
element.style.fontSize = "20px"; // 设置字体大小
let newParagraph = document.createElement("p");
let element = document.getElementById("myElement");
element.appendChild(newParagraph); // 将 newParagraph 添加到 myElement 的末尾
let existingElement = document.getElementById("existingElement");
element.insertBefore(newParagraph, existingElement); // 将 newParagraph 添加到 existingElement 之前
let element = document.getElementById("myElement");
let childToRemove = document.getElementById("childToRemove");
element.removeChild(childToRemove); // 从 myElement 中删除 childToRemove
let element = document.getElementById("myElement");
element.addEventListener('click', function() {
alert("元素被点击了!");
});
HTML 页面:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>DOM 操作示例</title>
</head>
<body>
<h1 id="header">欢迎来到 DOM 操作示例</h1>
<button onclick="changeText()">点击改变标题文字</button>
<div id="content">
<p>这是一个段落。</p>
<ul>
<li>列表项 1</li>
<li>列表项 2</li>
<li>列表项 3</li>
</ul>
</div>
<script>
function changeText() {
var header = document.getElementById("header");
header.innerHTML = "DOM 文档对象模型示例";
}
window.onload = function() {
var listItems = document.querySelectorAll('#content ul li');
for (var i = 0; i < listItems.length; i++) {
(function(index) {
listItems[index].onclick = function() {
alert('点击了第 ' + (index + 1) + ' 个列表项');
};
})(i);
}
};
</script>
</body>
</html>
解释:
<h1>
标签用于创建一个标题。<button>
标签用于创建一个按钮,当用户点击该按钮时,将调用 changeText
函数。<div>
包含了一个段落和一个无序列表。changeText
函数通过获取具有 id="header"
的元素,并修改其 innerHTML
属性来改变标题的文本内容。window.onload
事件处理器在页面加载完成后执行。它首先通过 querySelectorAll
获取所有的列表项,并为每个列表项添加点击事件处理程序。当列表项被点击时,会弹出一个警告框显示点击的是哪个列表项。这个例子展示了如何使用 JavaScript 操作 HTML DOM(文档对象模型)中的元素,包括选择元素、修改元素内容以及响应用户的交互动作。
运行:
DOM 是 JavaScript 操作网页的关键。 通过本文的介绍和示例,希望你对 JavaScript DOM 有了更深入的了解,并能够在实际开发中灵活运用。