Document: querySelectorAll() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
Document ã® querySelectorAll() ã¡ã½ããã¯ãæå®ããã CSS ã»ã¬ã¯ã¿ã¼ã«ä¸è´ããææ¸ä¸ã®è¦ç´ ã®ãªã¹ãã示ãéçãªï¼çãã¦ããªãï¼NodeList ãè¿ãã¾ãã
æ§æ
querySelectorAll(selectors)
弿°
selectors-
æååã§ãç §åãã 1 ã¤ã¾ãã¯è¤æ°ã®ã»ã¬ã¯ã¿ã¼ãå«ã¿ã¾ãã ãã®æååã¯æå¹ãª CSS ã»ã¬ã¯ã¿ã¼ã§ãªããã°ãªãããããã§ãªãå ´åã¯
SyntaxErrorä¾å¤ãçºçãã¾ãããªããHTML 仿§æ¸ã§ã¯ã屿§å¤ãæå¹ãª CSS èå¥åã§ãããã¨ãè¦æ±ãã¦ãã¾ããã
classã¾ãã¯id屿§ã®å¤ãæå¹ãª CSS èå¥åã§ãªãå ´åãã»ã¬ã¯ã¿ã¼å ã§ä½¿ç¨ããåã«ããã®å¤ã«å¯¾ãã¦CSS.escape()ãå¼ã³åºãããæåã®ã¨ã¹ã±ã¼ãã§èª¬æããã¦ããææ³ã®ããããã使ç¨ããå¿ è¦ãããã¾ããä¾ã«ã¤ãã¦ã¯ã屿§å¤ã®ã¨ã¹ã±ã¼ããåç §ãã¦ãã ããã
è¿å¤
ã©ã¤ãã§ã¯ãªã NodeList ã§ãæå®ãããã»ã¬ã¯ã¿ã¼ã®å°ãªãã¨ã 1 ã¤ã«ä¸è´ããè¦ç´ ãã¨ã« Element ãä¸ã¤ãã¤å«ã¿ã¾ããã¾ãã¯ä¸è´ãããã®ããªããã°ç©ºã® NodeList ã§ããè¦ç´ ã¯ææ¸å
ã®é åºã§ä¸¦ãã§ãã¾ããã¤ã¾ãã親è¦ç´ ãåè¦ç´ ããå
ã«ãå
ã«å®ç¾©ãããå
å¼è¦ç´ ãå¾ã«å®ç¾©ãããå
å¼è¦ç´ ããå
ã«é
ç½®ããã¾ãã
ã¡ã¢:
æå®ããã selectors ã CSS æ¬ä¼¼è¦ç´ ãå«ãå ´åãè¿ããããªã¹ãã¯å¸¸ã«ç©ºã«ãªãã¾ãã
ä¾å¤
SyntaxErrorDOMException-
æå®ããã
selectorsã®æ§æã妥å½ã§ã¯ãªãå ´åã§ãã
ä¾
>ä¸è´ãããã®ã®ãªã¹ãã®å ¥æ
ææ¸å
ã®ãã¹ã¦ã® <p> è¦ç´ ã® NodeList ãå
¥æãã¾ãã
const matches = document.querySelectorAll("p");
次ã®ä¾ã§ã¯ãææ¸å
ã«ãããã¹ã¦ã® <div> è¦ç´ ã®ãã¡ã note ã¾ã㯠alert ã®ããããã®ã¯ã©ã¹ãæã¤ãã®ãªã¹ããè¿ãã¾ãã
const matches = document.querySelectorAll("div.note, div.alert");
次ã«ã <p> è¦ç´ ã®ã®ãã¡ç´è¿ã®è¦ªè¦ç´ ã test ã¨ãã ID ãæã¤ã³ã³ããã¼å
ã«ä½ç½®ããç´æ¥ã®è¦ªè¦ç´ ã highlighted ã¯ã©ã¹ãæã¤ <div> ã§ãããªã¹ããåå¾ãã¾ãã
const container = document.querySelector("#test");
const matches = container.querySelectorAll("div.highlighted > p");
次ã®ä¾ã§ã¯å±æ§ã»ã¬ã¯ã¿ã¼ã使ç¨ãã¦ããã data-src ã¨ããååã®å±æ§ãæã¤ãææ¸å
ã® <iframe> è¦ç´ ã®ãªã¹ããè¿ãã¾ãã
const matches = document.querySelectorAll("iframe[data-src]");
次ã®ä¾ã§ã¯ãID ã user-list ã®è¦ç´ ã®ä¸ã«ãããdata-active 屿§ãæã¡ããã®å¤ã 1 ã§ãããªã¹ãé
ç®ã®ãªã¹ããè¿ãããã屿§ã»ã¬ã¯ã¿ã¼ã使ç¨ããã¦ãã¾ãã
const container = document.querySelector("#user-list");
const matches = container.querySelectorAll("li[data-active='1']");
ä¸è´ãããªã¹ãã¸ã®ã¢ã¯ã»ã¹
ãã£ãããä¸è´ããè¦ç´ ã® NodeList ãè¿ãããã¨ããããã¡ããã©é
åã®ããã«è¦ããã¨ãã§ãã¾ããé
åã空ã§ãã (length ããããã£ã 0 ã§ãã) å ´åã¯ãä¸è´ããªãã£ãã¨ãããã¨ã§ãã
ãã以å¤ã®å ´åã¯ãåç´ã«æ¨æºã®é å表è¨ã使ã£ã¦ããªã¹ãã®å 容ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããæ¬¡ã®ããã«ãä»»æã®ä¸è¬çãªã«ã¼ãå¦çã使ããã¨ãã§ãã¾ãã
const highlightedItems = userList.querySelectorAll(".highlighted");
highlightedItems.forEach((userItem) => {
deleteUser(userItem);
});
屿§å¤ã®ã¨ã¹ã±ã¼ã
ãã®ä¾ã¯ãHTML ææ¸ã« id ã¨ãã¦æå¹ãª CSS èå¥åã§ã¯ãªããã®ãå«ã¾ãã¦ããå ´åãquerySelector() ã§ããã使ç¨ããåã«ã屿§å¤ãã¨ã¹ã±ã¼ãããå¿
è¦ããããã¨ã示ãã¦ãã¾ãã
HTML
以ä¸ã®ã³ã¼ãã§ã¯ã<div> è¦ç´ ã® id ã "this?element" ã¨ãªã£ã¦ãã¾ãããCSS ã®èå¥åã§ã¯ "?" æåã使ç¨ãããã¨ãã§ããªããããããã¯æå¹ãª CSS èå¥åã§ã¯ããã¾ããã
ã¾ãã3 ã¤ã®ãã¿ã³ã¨ãã¨ã©ã¼ããã°åºåããããã® <pre> è¦ç´ ãããã¾ãã
<div id="this?element"></div>
<button id="no-escape">ã¨ã¹ã±ã¼ããªã</button>
<button id="css-escape">CSS.escape()</button>
<button id="manual-escape">æåã¨ã¹ã±ã¼ã</button>
<pre id="log"></pre>
CSS
div {
background-color: blue;
margin: 1rem 0;
height: 100px;
width: 200px;
}
JavaScript
3 ã¤ã®ãã¿ã³ã¯ãã¹ã¦ãã¯ãªãã¯ããã㨠<div> ã鏿ãããã¨ãããã®å¾ããã®èæ¯è²ãã©ã³ãã ãªå¤ã«è¨å®ãã¾ãã
- 1 ã¤ç®ã®ãã¿ã³ã¯ã
"this?element"ãç´æ¥ä½¿ç¨ãã¦ãã¾ãã - 2 ã¤ç®ã®ãã¿ã³ã¯ã
CSS.escape()ã使ç¨ãã¦å¤ãã¹ã±ã¼ããã¦ãã¾ãã - 3 ã¤ç®ã®ãã¿ã³ã¯ãããã¯ã¹ã©ãã·ã¥ã使ç¨ãã¦
"?"ã®æåãæç¤ºçã«ã¨ã¹ã±ã¼ããã¦ãã¾ãããªããããã¯ã¹ã©ãã·ã¥èªä½ããåæ§ã«å¥ã®ããã¯ã¹ã©ãã·ã¥ã使ç¨ãã¦"\\?"ã®ããã«ã¨ã¹ã±ã¼ãããªããã°ãªãã¾ããã
const log = document.querySelector("#log");
function random(number) {
return Math.floor(Math.random() * number);
}
function setBackgroundColor(id) {
log.textContent = "";
try {
const elements = document.querySelectorAll(`#${id}`);
const randomColor = `rgb(${random(255)} ${random(255)} ${random(255)})`;
elements[0].style.backgroundColor = randomColor;
} catch (e) {
log.textContent = e;
}
}
document.querySelector("#no-escape").addEventListener("click", () => {
setBackgroundColor("this?element");
});
document.querySelector("#css-escape").addEventListener("click", () => {
setBackgroundColor(CSS.escape("this?element"));
});
document.querySelector("#manual-escape").addEventListener("click", () => {
setBackgroundColor("this\\?element");
});
çµæ
1 ã¤ç®ã®ãã¿ã³ãã¯ãªãã¯ããã¨ã¨ã©ã¼ãçºçãã¾ããã2 ã¤ç®ã¨ 3 ã¤ç®ã®ãã¿ã³ã¯æ£å¸¸ã«åä½ãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| DOM > # ref-for-dom-parentnode-queryselectorallâ > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- DOM ããªã¼ã®é¸æã¨èµ°æ»
- 屿§ã»ã¬ã¯ã¿ã¼ï¼CSS ã¬ã¤ãï¼
- 屿§ã»ã¬ã¯ã¿ã¼ï¼MDN å¦ç¿é åï¼
Element.querySelector()ããã³Element.querySelectorAll()Document.querySelector()DocumentFragment.querySelector()ããã³DocumentFragment.querySelectorAll()