ZetCode

JavaScript querySelector

最后修改于 2025 年 4 月 2 日

在本文中,我们将探讨 JavaScript 中的 document.querySelector 方法。这个强大的方法允许开发人员使用 CSS 选择器来选择 DOM 元素,提供了灵活的元素选择功能。

基本定义

document.querySelector 方法返回与指定 CSS 选择器或选择器组匹配的第一个元素。它会搜索整个文档,并且只返回第一个匹配的元素。

getElementById 不同,querySelector 可以使用任何 CSS 选择器,包括类、属性、伪类和复杂选择器。这使得它在 DOM 操作任务中更加通用。

基本 querySelector

此示例演示了如何使用 querySelector 按类名选择元素。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Basic querySelector</title>
</head>
<body>

<div class="content">Hello there!</div>

<script>
    const element = document.querySelector('.content');
    console.log(element.textContent);
</script>

</body>
</html>

在这个基本示例中,我们有一个带有 "content" 类的 div 元素。JavaScript 代码使用类选择器 (.) 的 querySelector 来检索此元素,并将其文本内容记录到控制台。

这展示了 querySelector 通过 CSS 选择器访问元素的基本用法。该方法返回第一个匹配的元素,然后我们可以根据需要对其进行操作。

按 ID 选择

此示例演示了如何使用 querySelector 按 ID 选择元素,这类似于 getElementById

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Selecting by ID</title>
</head>
<body>

<h1 id="main-heading">Welcome to our site</h1>

<script>
    const heading = document.querySelector('#main-heading');
    heading.style.color = 'blue';
    heading.style.fontSize = '2.5rem';
</script>

</body>
</html>

在这里,我们使用 ID 选择器 (#) 按 ID 选择一个 h1 元素。然后,我们通过 JavaScript 直接修改其样式属性。

虽然这可以获得与 getElementById 类似的结果,但 querySelector 提供了一种更一致的方式,可以在代码中始终使用 CSS 选择器语法来选择元素。

复杂选择器

此示例演示了如何使用复杂的 CSS 选择器与 querySelector

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Complex Selectors</title>
</head>
<body>

<ul class="menu">
    <li>Home</li>
    <li class="active">Products</li>
    <li>About</li>
</ul>

<script>
    const activeItem = document.querySelector('ul.menu li.active');
    activeItem.style.fontWeight = 'bold';
    activeItem.style.color = 'green';
</script>

</body>
</html>

在此示例中,我们使用后代选择器结合类选择器来定位菜单中的特定列表项。选择器 'ul.menu li.active' 会查找作为类为 "menu" 的 ul 元素后代的、类为 "active" 的 li 元素。

这展示了 querySelector 使用熟悉的 CSS 选择器语法在复杂 DOM 结构中定位特定元素的功能。

属性选择器

此示例演示了如何使用属性选择器与 querySelector

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Attribute Selectors</title>
</head>
<body>

<input type="text" placeholder="Enter your email" data-required="true">
<button onclick="validateInput()">Validate</button>

<script>
    function validateInput() {
        const input = document.querySelector('input[data-required="true"]');
        if (!input.value) {
            input.style.border = '2px solid red';
        } else {
            input.style.border = '';
        }
    }
</script>

</body>
</html>

在这里,我们使用属性选择器来查找具有特定 data 属性的 input 元素。选择器 'input[data-required="true"]' 会匹配任何具有值为 "true" 的 data-required 属性的 input 元素。

这表明 querySelector 可以与自定义 data 属性一起使用,以创建更具语义和可维护性的 JavaScript 代码。

伪类选择器

此示例演示了如何使用伪类选择器与 querySelector

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Pseudo-class Selectors</title>
</head>
<body>

<ul class="links">
    <li><a href="#">First link</a></li>
    <li><a href="#">Second link</a></li>
    <li><a href="#">Third link</a></li>
</ul>

<script>
    const firstLink = document.querySelector('.links li:first-child a');
    firstLink.style.color = 'purple';
    firstLink.style.textDecoration = 'none';
</script>

</body>
</html>

在此示例中,我们使用 :first-child 伪类来选择列表中的第一个链接元素。选择器 '.links li:first-child a' 会定位类为 "links" 的元素内的第一个 li 元素的子元素 a。

这表明 querySelector 可以利用 CSS 伪类根据元素在文档中的位置或状态来选择元素。

来源

MDN querySelector 文档

在本文中,我们展示了如何在 JavaScript 中使用 document.querySelector。此方法使用 CSS 选择器语法提供了强大的元素选择功能,使其成为现代 Web 开发的重要组成部分。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 JS DOM 教程