Document.querySelectorAll()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод querySelectorAll() Document возвÑаÑÐ°ÐµÑ ÑÑаÑиÑеÑкий (не динамиÑеÑкий) NodeList, ÑодеÑжаÑий вÑе найденнÑе ÑлеменÑÑ Ð´Ð¾ÐºÑменÑа, коÑоÑÑе ÑооÑвеÑÑÑвÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑелекÑоÑÑ.
ÐÑимеÑание:
ÐаннÑй меÑод Ñеализован на оÑнове микÑина ParentNode querySelectorAll() меÑода.
СинÑакÑиÑ
elementList = document.querySelectorAll(selectors);
ÐаÑамеÑÑÑ
selectors-
СÑÑока
String, ÑодеÑжаÑÐ°Ñ Ð¾Ð´Ð¸Ð½ или более CSS ÑелекÑоÑ. ÐÑа ÑÑÑока должна бÑÑÑ Ð²Ð°Ð»Ð¸Ð´Ð½Ñм CSS ÑелекÑоÑом. ÐÑли ÑÑо не Ñак, Ñо генеÑиÑÑеÑÑÑSyntaxError. СмоÑÑиÑе ÐоиÑк ÑлеменÑов DOM Ñ Ð¸ÑполÑзованием ÑелекÑоÑов Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о Ñом, ÑаÑпознаваÑÑ ÑлеменÑÑ. ÐеÑколÑко ÑелекÑоÑов нÑжно ÑазделиÑÑ Ð·Ð°Ð¿ÑÑÑми.
ÐÑимеÑание:
СимволÑ, коÑоÑÑе не ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑÑандаÑÑного ÑинÑакÑиÑа CSS, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑкÑаниÑÐ¾Ð²Ð°Ð½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñимвола обÑаÑной коÑой ÑеÑÑÑ (\). ÐоÑколÑÐºÑ Ð² JavaScript Ñакже иÑполÑзÑеÑÑÑ ÑкÑаниÑование обÑаÑной коÑой ÑеÑÑÑ, пÑи напиÑании ÑÑÑоковÑÑ
лиÑеÑалов Ñ Ð¸ÑполÑзованием ÑÑиÑ
Ñимволов ÑледÑÐµÑ ÑоблÑдаÑÑ Ð¾ÑобÑÑ Ð¾ÑÑоÑожноÑÑÑ. ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии ÑмоÑÑи Escaping special characters.
ÐозвÑаÑаемое знаÑение
СÑаÑиÑеÑкий (non-live) NodeList, ÑодеÑжаÑий вÑе ÑлеменÑÑ Ð² пÑеделаÑ
докÑменÑа, коÑоÑÑе ÑооÑвеÑÑÑвÑÑÑ ÐºÐ°Ðº минимÑм Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð· ÑказаннÑÑ
ÑелекÑоÑов, или пÑÑÑой NodeList в ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ Ñовпадений.
ÐÑимеÑание:
ÐÑли в ÑÑÑоке selectors ÑодеÑжаÑÑÑ CSS пÑевдоÑлеменÑÑ, Ñо возвÑаÑаемÑй ÑпиÑок бÑÐ´ÐµÑ Ð²Ñегда пÑÑÑ.
ÐÑклÑÑениÑ
SyntaxError-
ÐÑклÑÑение
SYNTAX_ERRпÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð² ÑлÑÑае пеÑедаÑи некоÑÑекÑной гÑÑÐ¿Ð¿Ñ ÑелекÑоÑов.
ÐÑимеÑÑ
>ÐолÑÑение ÑпиÑка Ñовпадений
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ NodeList вÑеÑ
ÑлеменÑов <p> в докÑменÑе:
var matches = document.querySelectorAll("p");
Ð ÑÑом пÑимеÑе возвÑаÑаеÑÑÑ ÑпиÑок вÑеÑ
ÑлеменÑов <div> в докÑменÑе, коÑоÑÑе имеÑÑ ÐºÐ»Ð°ÑÑ note или alert:
var matches = document.querySelectorAll("div.note, div.alert");
ÐдеÑÑ Ð¼Ñ Ð¿Ð¾Ð»ÑÑаем ÑпиÑок ÑлеменÑов <p>, ÑÑим непоÑÑедÑÑвеннÑм ÑодиÑелÑÑким ÑлеменÑом ÑвлÑеÑÑÑ <div> Ñ ÐºÐ»Ð°ÑÑом highlighted, коÑоÑÑй ÑаÑположен внÑÑÑи конÑейнеÑа Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом test.
var container = document.querySelector("#test");
var matches = container.querySelectorAll("div.highlighted > p");
Ð ÑÑом пÑимеÑе иÑполÑзÑÑÑÑÑ ÑелекÑоÑÑ Ð°ÑÑибÑÑов, ÑÑÐ¾Ð±Ñ Ð²ÐµÑнÑÑÑ ÑпиÑок ÑлеменÑов <iframe>, коÑоÑÑе ÑодеÑÐ¶Ð°Ñ Ð°ÑÑибÑÑ data-src:
var matches = document.querySelectorAll("iframe[data-src]");
ÐдеÑÑ ÑелекÑÐ¾Ñ Ð°ÑÑибÑÑа иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð²ÑаÑа ÑлеменÑов ÑпиÑка, ÑодеÑжаÑиÑ
ÑÑ Ð² ÑпиÑке Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом "userlist", коÑоÑÑй Ð¸Ð¼ÐµÐµÑ Ð°ÑÑибÑÑ "data-active" Ñо знаÑением "1":
var container = document.querySelector("#userlist");
var matches = container.querySelectorAll("li[data-active='1']");
ÐоÑÑÑп к ÑовпадениÑм
ÐеÑнÑв NodeList Ñовпадений один Ñаз, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÐµÐ³Ð¾ как пÑоÑÑой маÑÑив. ÐÑли маÑÑив пÑÑÑой (Ñ. е. ÑвойÑÑво length Ñавно 0), Ñо Ñовпадений не бÑло найдено.
РдÑÑгом ÑлÑÑае, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑандаÑÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¼Ð°ÑÑива Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑодеÑжимомÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð»Ñбой опеÑаÑÐ¾Ñ Ð·Ð°ÑикливаниÑ, напÑимеÑ:
var highlightedItems = userList.querySelectorAll(".highlighted");
highlightedItems.forEach(function (userItem) {
deleteUser(userItem);
});
ÐÑимеÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ
querySelectorAll() ведÑÑ ÑÐµÐ±Ñ Ð½Ðµ Ñак, как болÑÑинÑÑво библиоÑек JavaScript DOM. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к неожиданнÑм ÑезÑлÑÑаÑам.
HTML
РаÑÑмоÑÑим ÑÑÐ¾Ñ HTML Ñ ÑÑÐµÐ¼Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми <div> блоками.
<div class="outer">
<div class="select">
<div class="inner"></div>
</div>
</div>
JavaScript
var select = document.querySelector(".select");
var inner = select.querySelectorAll(".outer .inner");
inner.length; // 1, не 0!
Рданном пÑимеÑе, когда Ð¼Ñ Ð²ÑбÑали ".outer .inner" в конÑекÑÑе <div> Ñ ÐºÐ»Ð°ÑÑом "select", ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ ÐºÐ»Ð°ÑÑом ".inner" бÑл вÑÑ Ñавно найден, Ñ
оÑÑ .outer не ÑвлÑеÑÑÑ Ð¿Ð¾Ñомком ÑлеменÑа в коÑоÑом пÑоиÑÑ
одил поиÑк (".select"). Ðо ÑмолÑаниÑ, querySelectorAll() пÑовеÑÑÐµÑ ÑолÑко поÑледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð±ÐµÐ· ÑÑÑÑа конÑекÑÑа.
ÐÑевдоклаÑÑ :scope даÑÑ Ð½Ð°Ð¼ ожидаемÑй ÑезÑлÑÑаÑ. ТолÑко ÑооÑвеÑÑÑвÑÑÑие ÑелекÑоÑÑ Ð² поÑомкаÑ
базового ÑлеменÑа:
var select = document.querySelector(".select");
var inner = select.querySelectorAll(":scope .outer .inner");
inner.length; // 0
СпеÑиÑикаÑии
| Specification |
|---|
| DOM > # ref-for-dom-parentnode-queryselectorallâ > |