JavaScript метод Element.querySelectorAll()
Определение и применение
JavaScript метод querySelectorAll() объекта
Element
возвращает статический (не живой) объект NodeList, представляющий список элементов, соответствующих
указанной группе селекторов, которые являются потомками элемента, на котором был вызван метод. Если совпадений не
найдено, то возвращается пустой NodeList.
Объект NodeList представляет из себя набор узлов, к которым можно обращаться по номерам индексов, индекс
коллекции начинается с 0. Вы можете использовать свойство length объекта NodeList для
определения количества элементов, соответствующих указанному селектору и при необходимости перебирать все эти элементы
в цикле.
Этот метод так же реализован как
Document.querySelectorAll(), DocumentFragment.querySelectorAll() и
ParentNode.querySelectorAll().
Если вам необходимы все элементы в документе, которые соответствуют указанному селектору или
селекторам, то используйте для этого метод
.querySelectorAll()
объекта
Document.
Для того, чтобы возвратить первый элемент, соответствующий указанной группе селекторов, который является
потомком элемента на котором был вызван метод, вы можете воспользоваться методом
querySelector().
Поддержка браузерами
Спецификация: dom.spec.whatwg
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
querySelectorAll | 1 | 12 | 3.5 | 10 | 3.1 | 18 | 4 | 10.1 | 2 | 1.0 | 4.4 | 2 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
const elementList = baseElement.querySelectorAll(selectors);
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
selectors |
Аргумент должен соответствовать допустимой строке селектора, содержащей один или несколько селекторов. При
указании нескольких селекторов необходимо разделять значения запятыми. В этом случае будут выбраны все
подходящие элементы в порядке документа без повторов. Если по какой-то причине вы используете в наименовании селекторов символы, которые не являются частью стандартного синтаксиса CSS, то при поиске такие символы должны быть экранированы с помощью символа обратной косой черты ( "\"). Поскольку обратная косая черта также является специальным символом (escape) в JavaScript, то при вводе литеральной строки ее необходимо экранировать дважды.
Обязательный параметр.
|
Исключения
| Тип исключения | Описание |
|---|---|
SyntaxError |
Возникает в том случае, если синтаксис указанного селектора или селекторов некорректен. |
Пример использования
Поиск всех пунктов списка внутри блока
Нажмите ▶, затем Click me: все пункты списка внутри div станут зелёными. Измените селектор, например на 'li:nth-child(2)', и сравните.
index.html
<button data-migration-click-0="">Click me</button>
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
main.js
function myFunc() {
const myDiv = document.body.querySelector('div'), // выбираем первый элемент <div> внутри элемента <body>
liCollection = myDiv.querySelectorAll('li') // выбираем все элементы <li> внутри элемента <div>
for (let i = 0; i < liCollection.length; i++) {
// проходим циклом по всем элементам массивоподобного объекта
liCollection[i].style.color = 'green' // устанавливаем зеленый цвет текста каждому элементу
}
}
// Обработчики кнопок перенесены из HTML для запуска с CSP без inline-скриптов.
document.querySelector('[data-migration-click-0]').addEventListener('click', function () {
myFunc()
})
document.querySelector('[data-migration-click-0]').removeAttribute('data-migration-click-0')
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием метода
addEventListener()
при нажатии на кнопку (HTML элемент
<button>) вызываем функцию myFunc(), которая с использованием JavaScript метода
querySelector()
выбирает первый элемент
<div>
внутри элемента
<body>, затем с помощью метода querySelectorAll() осуществляем поиск внутри выбранного элемента
<div>, и находим внутри него все элементы
<li>. После этого проходим циклом по всем элементам массивоподобного объекта и устанавливаем зеленый цвет текста
каждому элементу.