说我有这个:
<div class="class1 class2"></div>
我如何选择这个div
元素?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
那行不通。
我知道,在 jQuery 中,它是$('.class1.class2')
,但我想用 vanilla JavaScript 选择它。
说我有这个:
<div class="class1 class2"></div>
我如何选择这个div
元素?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
那行不通。
我知道,在 jQuery 中,它是$('.class1.class2')
,但我想用 vanilla JavaScript 选择它。
AND (两个类)
var list = document.getElementsByClassName("class1 class2");
var list = document.querySelectorAll(".class1.class2");
或 (至少一类)
var list = document.querySelectorAll(".class1,.class2");
XOR (一类但不是另一类)
var list = document.querySelectorAll(".class1:not(.class2),.class2:not(.class1)");
NAND (不是两个类)
var list = document.querySelectorAll(":not(.class1),:not(.class2)");
NOR (不是两个类别中的任何一个)
var list = document.querySelectorAll(":not(.class1):not(.class2)");
带有标准类选择器的querySelectorAll也适用于此。
document.querySelectorAll('.class1.class2');
正如@filoxo 所说,您可以使用document.querySelectorAll
.
如果您知道您要查找的类只有一个元素,或者您只对第一个元素感兴趣,则可以使用:
document.querySelector('.class1.class2');
顺便说一句,虽然.class1.class2
表示具有两个类的元素,.class1 .class2
(注意空格)表示层次结构 - 和具有 class 的元素,class2
它位于具有 class 的 en 元素内class1
:
<div class='class1'>
<div>
<div class='class2'>
:
:
如果您想强制检索直接子代,请使用>
符号 ( .class1 > .class2
):
<div class='class1'>
<div class='class2'>
:
:
有关选择器的完整信息:https :
//www.w3schools.com/jquery/jquery_ref_selectors.asp
html
<h2 class="example example2">A heading with class="example"</h2>
脚本代码
var element = document.querySelectorAll(".example.example2");
element.style.backgroundColor = "green";
querySelectorAll() 方法将文档中与指定 CSS 选择器匹配的所有元素作为静态 NodeList 对象返回。
NodeList 对象表示节点的集合。可以通过索引号访问节点。索引从 0 开始。
还可以了解有关https://www.w3schools.com/jsref/met_document_queryselectorall.asp 的更多信息
== 谢谢==