Document.querySelector 教程
最后修改: 2025 年 3 月 20 日
在本文中,我们将通过实际例子演示如何使用 querySelector 在 JavaScript 中选择 HTML 元素。
Document.querySelector
querySelector 方法是 Document 对象的一部分,它检索文档中与指定的 CSS 选择器匹配的第一个元素。 如果未找到匹配项,则返回 null。
相比之下,querySelectorAll 返回一个静态的 NodeList,其中包含与给定选择器组匹配的所有元素。 此列表不会随文档更改而更新。
Document.querySelector 示例
以下示例说明了如何使用 querySelector 和 querySelectorAll 动态地操作 HTML 元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document.querySelector</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.5.0/components/button.min.css">
<style>
body { margin: 3em }
.selected { background-color: #eee }
.container {
display: grid;
grid-template-columns: 100px 100px 100px 100px 100px;
grid-template-rows: 50px;
grid-column-gap:5px;
margin-bottom: 1em;
}
div>div {
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<button id="first" type="submit" class="ui grey button">First</button>
<button id="all" type="submit" class="ui brown button">All</button>
<button id="clear" type="submit" class="ui brown button">Clear</button>
<script src="main.js"></script>
</body>
</html>
此 HTML 文档包含一个容器内的五个带边框的 div 元素,它们被样式化为网格。 三个按钮触发对这些 div 的视觉更改。
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.5.0/components/button.min.css">
我们使用 Semantic UI 框架来增强文档的外观,以获得一致的按钮样式。
.selected { background-color: #eee }
.selected 类将浅灰色背景应用于高亮的 div 元素。
.container {
display: grid;
grid-template-columns: 100px 100px 100px 100px 100px;
grid-template-rows: 50px;
grid-column-gap:5px;
margin-bottom: 1em;
}
.container 类使用 CSS Grid 将五个 div 排列在单行中,具有相等的列宽和它们之间的小间隙。
div>div {
border: 1px solid #ccc;
}
容器内的内部 div 具有浅灰色边框,以便清晰的视觉分隔。
<div class="container"> <div></div> <div></div> <div></div> <div></div> <div></div> </div>
五个空的 div 元素嵌套在一个具有 container 类的父 div 中。
<button id="first" type="submit" class="ui grey button">First</button> <button id="all" type="submit" class="ui brown button">All</button> <button id="clear" type="submit" class="ui brown button">Clear</button>
三个按钮控制 div 元素:“First”突出显示第一个 div,“All”突出显示所有 div,而“Clear”删除突出显示。 Semantic UI 样式增强了它们的外观。
<script src="main.js"></script>
JavaScript 逻辑驻留在外部 main.js 文件中,该文件链接在文档的末尾。
document.getElementById("first").onclick = (e) => {
let tag = document.querySelector(".container div:first-child");
tag.className = "selected";
};
document.getElementById("all").onclick = (e) => {
let tags = document.querySelectorAll(".container div");
tags.forEach( tag => {
tag.className = "selected";
});
};
document.getElementById("clear").onclick = (e) => {
let tags = document.querySelectorAll(".container div");
tags.forEach( tag => {
tag.classList.remove("selected");
});
};
main.js 文件定义了每个按钮的行为,使用 querySelector 和 querySelectorAll 来操作 DOM。
document.getElementById("first").onclick = (e) => {
一个事件监听器使用 onclick 属性附加到“First”按钮,该属性通过 getElementById 选中。
let tag = document.querySelector(".container div:first-child");
querySelector 方法使用 :first-child 伪类,以第一个 div 为目标,该 div 位于 .container 内部。
tag.className = "selected";
selected 类被分配给目标 div,应用灰色背景。
let tags = document.querySelectorAll(".container div");
querySelectorAll 方法将 .container 内的所有 div 元素作为 NodeList 检索。
tags.forEach( tag => {
tag.className = "selected";
});
使用 forEach,我们遍历 NodeList 并将 selected 类应用于每个 div 元素。
此屏幕截图显示在单击“First”按钮后,第一个 div 以灰色背景突出显示,演示了该效果。
来源
在本教程中,我们探讨了使用 querySelector 和 querySelectorAll 选择和操作 HTML 元素的方法。