javascript基础学习系列五百三十三:querySelectorAll()

本文详细解释了querySelectorAll()方法的工作原理,它返回所有匹配元素的NodeList,提供高效CSS选择和避免性能问题。同时介绍了matches()方法用于元素匹配测试。
摘要由CSDN通过智能技术生成

querySelectorAll()方法跟querySelector()一样,也接收一个用于查询的参数,但它会返回
所有匹配的节点,而不止一个。这个方法返回的是一个NodeList 的静态实例。
再强调一次,querySelectorAll()返回的NodeList 实例一个属性和方法都不缺,但它是一
个静态的“快照”,而非“实时”的查询。这样的底层实现避免了使用NodeList 对象可能造成的性
能问题。
以有效CSS 选择符调用querySelectorAll()都会返回NodeList,无论匹配多少个元素都可以。
如果没有匹配项,则返回空的NodeList 实例。
与querySelector()一样,querySelectorAll()也可以在Document、DocumentFragment 和
Element 类型上使用。下面是几个例子:
// 取得ID 为"myDiv"的

元素中的所有 元素
let ems = document.getElementById(“myDiv”).querySelectorAll(“em”);
// 取得所有类名中包含"selected"的元素
let selecteds = document.querySelectorAll(“.selected”);
// 取得所有是

元素子元素的元素
let strongs = document.querySelectorAll(“p strong”);
返回的NodeList 对象可以通过for-of 循环、item()方法或中括号语法取得个别元素。比如:
let strongElements = document.querySelectorAll(“p strong”);
// 以下3 个循环的效果一样
for (let strong of strongElements) {
strong.className = “important”;
}
for (let i = 0; i < strongElements.length; ++i) {
strongElements.item(i).className = “important”;
}
for (let i = 0; i < strongElements.length; ++i) {
strongElements[i].className = “important”;
}
与querySelector()方法一样,如果选择符有语法错误或碰到不支持的选择符,则querySelector-
All()方法会抛出错误。
matches()
matches()方法(在规范草案中称为matchesSelector())接收一个CSS 选择符参数,如果元素
匹配则该选择符返回true,否则返回false。例如:
if (document.body.matches(“body.page1”)){
// true
}
使用这个方法可以方便地检测某个元素会不会被querySelector()或querySelectorAll()方
法返回。
所有主流浏览器都支持matches()。Edge、Chrome、Firefox、Safari 和Opera 完全支持,IE9~11
及一些移动浏览器支持带前缀的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值