假设有这样一个例子:
<div class="class1 class2"></div>
我该如何选择这个div
元素?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
那样做不起作用。
我知道在 jQuery 中是 $('.class1.class2')
,但我想使用纯 JavaScript 来选择它。
假设有这样一个例子:
<div class="class1 class2"></div>
我该如何选择这个div
元素?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
那样做不起作用。
我知道在 jQuery 中是 $('.class1.class2')
,但我想使用纯 JavaScript 来选择它。
AND (两个类都满足)
var list = document.getElementsByClassName("class1 class2");
var list = document.querySelectorAll(".class1.class2");
OR (至少一个类别)
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)");
document.querySelectorAll('.class1, .class2');
。 - bazzlebrush.class1
或.class2
类名的元素,而上面的选择器只会选取同时具备这两个类名的元素,并且它确实可以工作。请查看此测试的控制台输出:https://jsfiddle.net/0ph1p9p2/ - filoxo 如@filoxo所说,您可以使用document.querySelectorAll
。
如果您知道只有一个带有所需类的元素,或者您只对第一个元素感兴趣,则可以使用:
document.querySelector('.class1.class2');
顺便提一下,.class1.class2
表示具有 两个 类的元素,而 .class1 .class2
(注意空格)表示层次结构 - 具有 class class1
的元素内部的带有 class class2
的元素:
<div class='class1'>
<div>
<div class='class2'>
:
:
如果你想强制检索一个直接的子元素,可以使用>
符号 (.class1 > .class2
):
<div class='class1'>
<div class='class2'>
:
:
要了解有关选择器的全部信息:
https://www.w3schools.com/jquery/jquery_ref_selectors.asp
Okay this code does exactly what you need:
HTML:
<div class="class1">nothing happens hear.</div>
<div class="class1 class2">This element will receive yout code.</div>
<div class="class1">nothing happens hear.</div>
JS:
function getElementMultipleClasses() {
var x = document.getElementsByClassName("class1 class2");
x[0].innerHTML = "This is the element you want";
}
getElementMultipleClasses();
html
<h2 class="example example2">A heading with class="example"</h2>
javascritp代码
var element = document.querySelectorAll(".example.example2");
element.style.backgroundColor = "green";
querySelectorAll() 方法返回文档中与指定 CSS 选择器匹配的所有元素,作为一个静态 NodeList 对象。
NodeList 对象表示节点的集合。可以通过索引号访问节点。索引从 0 开始。
还可以了解更多 https://www.w3schools.com/jsref/met_document_queryselectorall.asp
== 谢谢 ==
实际上,@bazzlebrush的回答和@filoxo的评论对我帮助很大。
我需要找到类可以是“zA yO”或者“zA zE”的元素。
使用jQuery,我首先选择所需元素的父级:
(一个class以'abc'开头且style!='display:none'的div)
var tom = $('div[class^="abc"][style!="display: none;"]')[0];
然后是该元素所需的子元素:
var ax = tom.querySelectorAll('.zA.yO, .zA.zE');
非常完美!请注意,您不必使用document.querySelector,您可以像上面那样传递一个预先选择的对象。
var list = document.querySelector('.remove_fields.dynamic, .remove_fields.existing')
根据条件获取element
,如果其中一个组合存在,则获取它,但如果两个组合都存在,则不获取。 - Ahmad hamza<img>
)的元素,这些元素属于多个类,则可以按以下格式在querySelectorAll()
中指定标签名称以及类名:document.querySelectorAll("tagname.class1.class2.class3")
。 - letterphile