JavaScript中的querySelector()方法是什么,它是如何工作的?
moboyou 2025-06-13 07:54 5 浏览
在JavaScript中,有时您需要访问HTML元素。querySelector方法是一个Web API,它选择与传入的指定CSS选择器匹配的第一个元素。
但是,更详细地说,这是如何工作的呢?在本文中,我们将看一些如何使用querySelector方法以及querySelectorAll方法的示例。
(本文内容参考:java567.com)
querySelector()方法的基本语法
querySelector方法在document对象上调用,并接受一个参数,表示要选择的元素的CSS选择器。
document.querySelector(selector);
如果选择器在文档中匹配到一个元素,则该方法将返回第一个匹配的元素。如果没有匹配项,则该方法将返回null。
如何使用querySelector()方法与类型选择器
CSS中的类型选择器是指HTML元素的名称。例如,button、div、p等。
在第一个示例中,我们在HTML文档中有一个button元素。
<button>Show Alert</button>
如果我们想在JavaScript文件中访问该元素,我们可以像这样使用querySelector方法:
const buttonElement = document.querySelector("button");
这行代码选择页面上看到的第一个按钮,并将结果赋给一个名为buttonElement的const变量。
如果我们将这个buttonElement变量记录到控制台,输出将会是:
console.log(buttonElement);
我们可以使用buttonElement变量,并为按钮添加事件监听器,以便在单击按钮时显示警报。
buttonElement.addEventListener("click", () => {
alert("Button was clicked!");
});
这是完整的代码和交互示例。
如何使用querySelector()方法与类选择器
CSS中的类选择器是指用于HTML元素的类名。例如.container、.button等。
假设我们想要构建一个纸牌游戏,并且希望在单击按钮时隐藏/显示游戏规则。我们可以使用querySelector方法选择按钮和规则容器。
这是初始HTML:
<h1>Let's play solitaire!</h1>
<main>
<button class="rules-btn">Show Rules</button>
<section class="rules-container">
<h2>Rules to the game</h2>
<ul>
<li>There are 7 columns of cards</li>
<li>First column has 1 card, second has 2, third has 3, and so on</li>
<li>First card in each column is face up, rest are face down</li>
<li>Move cards to build 4 stacks of cards in ascending order</li>
<li>Start with aces and build up to kings</li>
<li>Move cards by dragging and dropping</li>
</ul>
</section>
</main>
在JavaScript文件中,我们可以使用querySelector方法选择规则按钮和规则容器。
const rulesBtn = document.querySelector(".rules-btn");
const rulesContainer = document.querySelector(".rules-container");
然后,我们可以为rulesBtn变量添加事件监听器,以在单击按钮时显示/隐藏规则容器。我们使用classList属性在规则容器元素上切换类“show”。
rulesBtn.addEventListener("click", () => {
rulesContainer.classList.toggle("show");
});
这是一个交互式示例,在这里您可以看到单击按钮时规则容器被显示和隐藏。
尽管这里的切换是有效的,但代码中有一个小bug。默认情况下,规则将被隐藏,按钮文本显示为“显示规则”。当显示规则时,按钮文本应更改为“隐藏规则”,但现在没有。
在事件监听器内部,我们可以根据规则容器的状态更新按钮的文本内容,当规则显示时显示“隐藏规则”,当规则隐藏时显示“显示规则”。
rulesBtn.textContent = rulesContainer.classList.contains("show")
? "Hide Rules"
: "Show Rules";
现在按钮文本将根据规则容器的状态更改。这是完整的JavaScript代码:
const rulesBtn = document.querySelector(".rules-btn");
const rulesContainer = document.querySelector(".rules-container");
rulesBtn.addEventListener("click", () => {
rulesContainer.classList.toggle("show");
rulesBtn.textContent = rulesContainer.classList.contains("show")
? "Hide Rules"
: "Show Rules";
});
这是一个交互式示例,其中包含更新后的JavaScript代码。
如何使用querySelectorAll()方法
querySelectorAll方法与querySelector方法类似,但不是返回第一个匹配的元素,而是返回所有匹配元素的NodeList。NodeList是一个类似数组的对象,包含所有与指定选择器匹配的元素。
在这个例子中,我们有一个无序的运动列表,我们想为每个列表项生成随机背景颜色。
这是初始HTML:
<button class="btn">Generate Random Background Colors</button>
<ul class="sports-list">
<li>Football</li>
<li>Basketball</li>
<li>Tennis</li>
<li>Golf</li>
<li>Swimming</li>
</ul>
要选择无序列表中的所有列表项,我们可以像这样使用querySelectorAll方法:
const sportsList = document.querySelectorAll(".sports-list li");
如果我们将sportsList变量记录到控制台,输出将会是:
console.log(sportsList);
然后,我们需要使用querySelector方法选择按钮。
const randomColorBtn = document.querySelector(".btn");
然后,我们可以创建一个随机颜色列表。
const lightColorsArr = [
"#FFDAB9",
"#FFE4B5",
"#FFFFE0",
// 省略部分代码
];
每当用户单击按钮时,我们希望洗牌颜色列表,并从数组中选择5种随机浅色。我们可以使用Fisher-Yates洗牌算法来洗牌数组,这是JavaScript中常见的一种方法。
function shuffleArray(arr) {
let currentIndex = arr.length;
let randomIndex;
while (currentIndex !== 0) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[arr[currentIndex], arr[randomIndex]] = [
arr[randomIndex],
arr[currentIndex],
];
}
return arr;
}
然后我们可以为按钮添加事件监听器并洗牌数组。
randomColorBtn.addEventListener("click", () => {
const shuffledColors = shuffleArray(lightColorsArr);
});
对于每个列表项,我们可以将背景颜色设置为洗牌数组中的随机颜色。
sportsList.forEach((list, index) => {
list.style.backgroundColor = shuffledColors[index];
});
这是完整的代码:
const sportsList = document.querySelectorAll(".sports-list li");
const randomColorBtn = document.querySelector(".btn");
console.log(sportsList);
const lightColorsArr = [
"#FFDAB9",
"#FFE4B5",
"#FFFFE0",
// 省略部分代码
];
function shuffleArray(arr) {
let currentIndex = arr.length;
let randomIndex;
while (currentIndex !== 0) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[arr[currentIndex], arr[randomIndex]] = [
arr[randomIndex],
arr[currentIndex],
];
}
return arr;
}
randomColorBtn.addEventListener("click", () => {
const shuffledColors = shuffleArray(lightColorsArr);
sportsList.forEach((list, index) => {
list.style.backgroundColor = shuffledColors[index];
});
});
这是一个交互式示例,包含完整的JavaScript代码。单击按钮,您会看到列表项更改为随机背景颜色。
结论
querySelector和querySelectorAll方法是有用的Web API,允许您访问DOM中的元素。您可以使用这些方法通过类型、类、ID、属性、伪类和伪元素选择器来选择元素。
我建议您尝试使用这些方法,并在您自己的项目中看看您能做些什么。
我希望您找到本文有用和信息丰富。祝编码愉快!
(本文内容参考:java567.com)
相关推荐
- 在html5页面中如何使用vue3
-
今天是2021.7.14,是个好日子.好久没发布文章了.今天发布下如何在在html页面中使用vue3.义县游学电子科技一直以技术文章为主.以下是h5的页面源码:<html><scri...
- 分享几个css实用技巧
-
本篇将介绍几个css小技巧,目录如下:自定义引用标签的符号重置所有标签样式禁止文本选择制作小三角形自定义<q>引用标签的符号默认q标签引用符号是浏览器根据不同语言环境自动设置的,当然我们也...
- 复玥语 Web Fonts 的引入方法
-
CSS的font-face属性CSS的font-face是CSS3中允许使用自定义字体的一个模块,功能是支持WEB字体,能够将网络地址、自定义的Web上的字体嵌入到你的网页中。...
- 17个CSS知识点整理
-
微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(点击页底“阅读原文”下载源代码)●●●1、对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机...
- JavaScript开发基础——CSS知识
-
JavaScript开发基础——CSS知识使用CSS技术可以对文档进行精细的页面美化,CSS不仅可以对单个页面进行格式化,还可以对多个页面使用相同的样式进行修饰,以达到统一的效果。CSS的相关概念CS...
- HTML序章(学习目的、对象、基本概念)——零基础自学网页制作
-
为什么学习网页制作?互联网时代的今天,各种各样的网页充斥着我们的生活。只要使用浏览器,打开的每一个页面都可以称之为网页。即使使用头条这样的APP,其内容布局、展示的方法也脱胎于网页页面设计的方法与原则...
- 如何拥有渐变色 | css进阶
-
渐变色--线性渐变人类对美的追求是无止境的,色彩的搭配是对美的最基本要求,而其中的渐变,就能给人一种舒缓的感觉,它不那么的突兀,给人一种不逼迫、缓缓地和高逼格感觉。Css3引入了渐变的功能,有线性渐变...
- Tailwindcss 入门
-
是什么?Tailwindcss是一个功能类优先的CSS框架,通过flex,pt-4,text-center和rotate-90这种原子类组合快速构建网站,而不需要离开你的HTML。...
- html css js基础知识点
-
提示:点击上方"蓝色字体"↑可以订阅噢!1.对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更...
- (一)熟练HTML5+CSS3,每天复习一遍
-
前言学习网页的概念和分类,了解静态网页和动态网页的不同;了解网页浏览器的工作原理。了解HTML,XHTML,HTML5的概念,制作简单的HTML页面的开发。什么是网页可以在internet上通过网页浏...
- JavaScript代码怎样引入到HTML中?
-
JavaScript程序不能独立运行,它需要被嵌入HTML中,然后浏览器才能执行JavaScript代码。通过<script>标签将JavaScript代码引入到HTM...
- 你知道HTML、CSS、JS文件在浏览器中是如何转化成页面的吗?
-
在前面一篇文章:「高频面试题」浏览器从输入url到页面展示中间发生了什么中,我们有对浏览器的渲染流程做了一个概括性的介绍,今天这篇文章我们将深入学习这部分内容。对于很多前端开发来说,平常做工主要专注...
- HTML页面中head标签有啥用?——零基础自学网页制作
-
head标签概述通过之前三节的学习,我们基本了解了HTML标记语言的基本语法,也明确了一个基本原则,那就是网页中所有的可视信息都是写在<body></body>标签之间的,在一...
- 一、什么是CSS3
-
一、什么是CSS3如何学习SEO搜索引擎优化CSS是什么CascadingSheet层叠级联样式表,表现,网页美化CSS发展史:CSS1.0CSS2.0DIV+CSSHTML和CSS结构分...
- html实现原生table并设置表格边框的两种方式
-
在HTML中实现原生表格并设置表格边框的详尽教程在HTML中,表格是展示结构化数据的重要工具。为了使表格更加清晰、美观,设置表格边框是常见的需求。本文将深入探讨两种原生方式来实现表格边框...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle 数据导出导入 (16)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle修改端口 (15)
- 左连接 oracle (15)
- oracle 转义字符 (14)
- oracle安装补丁 (19)
- matlab归一化 (16)
- matlab脚本 (14)
- 共轭梯度法matlab (16)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- c语言编程小知识大全 (17)
- css class选择器用法 (25)
- css样式引入 (30)