返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript选择器函数querySelector和querySelectorAll
  • 616
分享到

JavaScript选择器函数querySelector和querySelectorAll

2024-04-02 19:04:59 616人浏览 八月长安
摘要

目录一、querySelector查询单个元素1. Document实例调用2. Element实例调用二、querySelectorAll查询所有元素1、for in遍历的问题2、

选择器是CSS非常强大的功能,早先一般是通过getElementByIdgetElementsByTagName来获取页面元素,在一些场景下就很不方便。

后来DOM扩展出了Selector api标准,其中 Selector API Level 1 包含了querySelectorquerySelectorAll两个方法,可以通过Css选择器匹配页面元素。

一、querySelector查询单个元素

querySelector用于查询页面中第一个符合规则的元素,可以在Document实例和Element实例上调用,接收一个选择器字符串参数,如果查找到则返回 htmlElement 对象,否则返回null

语法格式如下:


Document实例.querySelector(选择器字符串);

Element实例.querySelector(选择器字符串);

1. Document实例调用

Document实例调用是获取整个页面匹配的元素。

简单示例如下:


// 获取body元素

let body = document.querySelector("body");

console.log(body)

// 获取id为container的元素,只会获取第一个

let container = document.querySelector("#container");

console.log(container)

// 获取class中包含btn的元素,只会获取第一个

let btn = document.querySelector(".btn");

console.log(btn);



// 获取container直接子类class中包含btn的元素,只会获取第一个

let containerBtn = document.querySelector("#container>.btn");

console.log(containerBtn);

2. Element实例调用

Element实例调用是获取该元素子树内匹配的元素。

简单示例:


// 获取ID为container的元素

let container = document.querySelector("#container");

// 需要检测元素对象是否存在,存在才有 querySelector 方法

if (container) {

	// 只查找 container 内class包含 btn 的元素。

	let containerBtn = container.querySelector(".btn");

	console.log(containerBtn);

}

理论上来讲,因为Css可以通过选择器获取页面任意的元素,所以Element实例调用可以直接写成Document实例的调用方式,只需要修改选择器字符串参数即可。

例如上例就可以直接写成如下方式:


let containerBtn = document.querySelector("#container .btn");

并且因为少了一个if判断,代码就更加简洁。当然在有些业务场景下,ELement实例是已经确定的了,那么直接用 ELement实例 调用就更加方便了。

二、querySelectorAll查询所有元素

querySelectorAll方法和querySelector方法类似,只是它是返回所有匹配的元素,类型是nodeList

简单示例:


// 假设页面有两个div类名包含 article

// 获取所有类包含 article 的元素

let articleList = document.querySelectorAll(".article");

console.log(articleList);

console.log(articleList.length);

// 控制台输出:

//	NodeList(2) [div.article, div.article]

//	2

querySelectorAll方法返回的是所有元素,在实务中经常需要遍历,遍历可以使用常规的for遍历、for of遍历和forEach遍历。


// for of 遍历

for (let item of articleList) {

	console.log(item);

}

// for 遍历

for (let i = 0; i < articleList.length; i++) {

	console.log(articleList[i]);

	console.log(articleList.item(i));

}

// forEach 遍历

articleList.forEach((item, index) => {

	console.log(item, index);

});

1、for in遍历的问题

如果使用for in遍历,则会把原型链上的一些方法也遍历出来,如entriesforEach等。

2、快照而非实时的问题

使用querySelectorAll方法获取的NodeList是快照,而非实时的数据。

请看下面这个例子:


// 使用 querySelectorAll 获取,articleList 是静态的,非实时的

let articleList = document.querySelectorAll(".article");

console.log(articleList);

console.log(articleList.length); // 2

setTimeout(() => {

	// 增加一个元素

	let div = document.createElement("div");

	div.className = "article";

	document.body.appendChild(div);	

	console.log(articleList);

	// 依旧为2

	console.log(articleList.length);

}, 0);

最后设置了一个定时器,往页面塞了一个classarticlediv元素,但是 articleList 的长度依旧是2。

如果是用getElementsByClassName获取,那么 articleList 就是实时的数据。

请看如下例子:


// 使用 getElementsByClassName 获取,articleList是实时的

let articleList = document.getElementsByClassName("article");

console.log(articleList);

console.log(articleList.length);



setTimeout(() => {

	// 增加一个元素

	let div = document.createElement("div");

	div.className = "article";

	document.body.appendChild(div);

	

	console.log(articleList);

	// 这里为3

	console.log(articleList.length);

}, 0);

在控制台查看打印结果:

HTMLCollection动态效果:

使用 getElementsByClassName 获取的对象是 HTMLCollection 类型,会随文档流变化而变化。                  

三、小结

  • 1. querySelectorquerySelectorAll根据Css选择器获取页面元素,功能很强大。
  • 2. querySelectorAll获取的元素是快照,静态的,而非实时的,注意踩坑。

到此这篇关于 javascript选择器函数querySelectorquerySelectorAll的文章就介绍到这了,更多相关 JavaScript中的querySelector和querySelectorAll内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript选择器函数querySelector和querySelectorAll

本文链接: https://lsjlt.com/news/158258.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript选择器函数querySelector和querySelectorAll
    目录一、querySelector查询单个元素1. Document实例调用2. Element实例调用二、querySelectorAll查询所有元素1、for in遍历的问题2、...
    99+
    2024-04-02
  • JavaScript选择器函数querySelector和querySelectorAll怎么用
    这篇文章主要介绍JavaScript选择器函数querySelector和querySelectorAll怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!选择器是Css非常强大的功能,早先一般是通过getElem...
    99+
    2023-06-21
  • 函数编程的新选择:Go 和 Bash 实时函数
    函数编程是一种以函数为核心的编程范式,它强调函数的独立性和可重用性。在过去的几十年中,许多语言都采用了函数编程的思想,如Lisp、Haskell、Scala等。但是,随着计算机性能的提高,实时函数编程也逐渐成为了一种新的趋势。在本文中,我...
    99+
    2023-10-04
    bash 实时 函数
  • Golang函数库的替代方案和选择
    go 的函式庫替代方案包括額外套件(如 redis 套件)和使用其他程式語言的函式庫。在選擇替代方案時,請考慮效能、文件、許可證和維護性。實例展示使用 github.com/go-red...
    99+
    2024-04-18
    golang 函数库 python redis git
  • javascript选择器有哪些
    javascript中常用的选择器有:1.getElementById,返回拥有指定ID的第一个对象引用;2.getElementsByName,返回带有指定名称的对象集合;3.getElementsByTagName,返回带有指定标签名的...
    99+
    2024-04-02
  • ASP 函数和 Spring:存储数据的不二选择。
    在现代应用程序的开发中,存储和管理数据是至关重要的一步。ASP 函数和 Spring 是两种常用的框架,它们都提供了不同的存储数据的方式。在本文中,我们将探讨 ASP 函数和 Spring 的存储数据的方法,以及它们之间的差异和优缺点。 ...
    99+
    2023-10-06
    函数 spring 存储
  • JavaScript的选择器是什么
    这篇文章主要讲解了“JavaScript的选择器是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript的选择器是什么”吧! ...
    99+
    2024-04-02
  • javascript的选择器有哪些
    本文小编为大家详细介绍“javascript的选择器有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript的选择器有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • Java、JavaScript和容器存储:谁是最佳选择?
    Java和JavaScript是两种非常流行的编程语言,而容器存储是一种新兴的数据存储技术。在这篇文章中,我们将探讨这三种技术的优缺点,以及在不同情况下应该选择哪种技术。 Java Java是一种面向对象的编程语言,由Sun Micros...
    99+
    2023-08-09
    javascript 存储 容器
  • PHP函数和JavaScript数据类型:如何在Web开发中选择正确的工具?
    Web开发需要掌握多种编程语言和技术,其中PHP和JavaScript是最常用的两个语言。PHP是一种服务器端语言,而JavaScript则是一种客户端语言。在Web开发中,经常需要使用PHP函数和JavaScript数据类型来完成各种任...
    99+
    2023-11-14
    函数 javascript 数据类型
  • Python-VTK隐式函数属性选择和剪切数据
    前言: VTK,(visualizationtoolkit)是一个开放资源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的...
    99+
    2024-04-02
  • 选择哪个IDE?Go和JavaScript开发者的选择困难症
    随着Go语言和JavaScript的流行,开发者们在选择IDE时遇到了困难。这两种语言都有自己的特点和优势,因此选择适合自己的IDE是很重要的。在本篇文章中,我们将探讨选择哪个IDE对于Go和JavaScript开发者来说是最好的。 对于G...
    99+
    2023-10-21
    javascript 重定向 ide
  • CSS相邻兄弟选择器、子选择器和兄弟选择器怎么用
    本文小编为大家详细介绍“CSS相邻兄弟选择器、子选择器和兄弟选择器怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS相邻兄弟选择器、子选择器和兄弟选择器怎么用”文章能帮助大家解决疑惑,下面跟着小编...
    99+
    2024-04-02
  • javascript选择器失效怎么办
    本教程操作环境:Windows10系统、javascript1.8.5版本、Dell G3电脑。javascript选择器失效怎么办?jQuery的ID选择器失效问题jQuery的ID选择器,在同一项目别的文件中一切正常;在当前页面,jQu...
    99+
    2023-05-14
    javascript 选择器
  • JavaScript测试工具和库:最佳选择
    在现代Web开发中,JavaScript已经成为构建交互式、动态Web应用程序的必备语言,因此JavaScript测试工具和库也变得越来越重要。这些工具和库可以帮助开发人员快速检测和修复JavaScript代码中的错误,提高JavaSc...
    99+
    2024-02-08
    JavaScript 测试 工具 自动化 单元 集成 端到端
  • CSS选择器和ID选择器区分大小写吗
    今天小编给大家分享一下CSS选择器和ID选择器区分大小写吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • HTML类选择器和ID选择器有什么区别
    这篇文章主要介绍了HTML类选择器和ID选择器有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTML类选择器和ID选择器有什么区别文章都会有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • CSS怎么结合后代选择器和子选择器
    这篇“CSS怎么结合后代选择器和子选择器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“CS...
    99+
    2024-04-02
  • jQuery基本选择器和层次选择器怎么用
    这篇文章主要为大家展示了“jQuery基本选择器和层次选择器怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery基本选择器和层次选择器怎么用”这篇文...
    99+
    2024-04-02
  • 如何在 Python 数组和 JavaScript 框架之间做出选择?
    在当今数字化的世界中,Python 数组和 JavaScript 框架都是非常受欢迎的技术。Python 数组是一种类似于列表的数据结构,而 JavaScript 框架则是一种用于构建动态网页的技术。对于那些想要在 Python 数组和 J...
    99+
    2023-10-28
    数组 javascript 框架
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作