Ответ 1
На самом деле это очень похоже на jQuery:
document.getElementsByClassName('class1 class2')
Скажи, у меня есть это:
<div class="class1 class2"></div>
Как выбрать этот элемент div
?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
Это не работает.
Я знаю, что в jQuery это $('.class1.class2')
, но я бы хотел выбрать его с помощью ванильного JavaScript.
На самом деле это очень похоже на jQuery:
document.getElementsByClassName('class1 class2')
querySelectorAll со стандартными селекторами классов также работает для этого.
document.querySelectorAll('.class1.class2');
Как сказал @filoxo, вы можете использовать document.querySelectorAll
.
Если вы знаете, что есть только один элемент с классом, который вы ищете, или вас интересует только первый, вы можете использовать:
document.querySelector('.class1.class2');
Кстати, в то время как .class1.class2
указывает на элемент с обоими классами, .class1.class2
(обратите внимание на пробел) указывает на иерархию - и элемент с классом class2
который находится внутри элемента en с классом class1
:
<div class='class1'>
<div>
<div class='class2'>
:
:
И если вы хотите принудительно получить прямой дочерний элемент, используйте >
sign (.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>
код 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
== Спасибо ==
Хорошо, этот код делает именно то, что вам нужно:
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();
Надеюсь, поможет! ;)
На самом деле ответ @bazzlebrush и комментарий @filoxo мне очень помогли.
Мне нужно было найти элементы, в которых класс может быть "zA yO" ИЛИ "zA zE"
Используя jquery, я сначала выбираю родительский элемент для желаемых элементов:
(div с классом, начинающимся с 'abc' и style!= 'display: none')
var tom = $('div[class^="abc"][style!="display: none;"]')[0];
то нужные дети этого элемента:
var ax = tom.querySelectorAll('.zA.yO, .zA.zE');
работает отлично! обратите внимание, что вам не нужно делать document.querySelector, который вы можете, как описано выше, в предварительно выбранном объекте.