ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã« (Document Object Model, DOM) ã¯ãã¦ã§ãä¸ã®ææ¸ã®ã³ã³ãã³ãã¨æ§é ãããªããªãã¸ã§ã¯ãã®ãã¼ã¿è¡¨ç¾ã§ãããã®ã¬ã¤ãã§ã¯ãç°¡åã« DOM ãç´¹ä»ãã¾ãã DOM ãã©ã®ããã«ã¡ã¢ãªã¼å ã§ HTML ææ¸ã表ç¾ããããã©ã®ããã« API ã使ç¨ãã¦ã¦ã§ãã³ã³ãã³ããã¢ããªã±ã¼ã·ã§ã³ã使ããã®ããè¦ã¦ã¿ã¾ãã
DOM ã¨ã¯ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã« (DOM) ã¯ã¦ã§ãææ¸ã®ããã®ããã°ã©ãã³ã°ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãããã¼ã¸ã表ç¾ãããããããã°ã©ã ãææ¸æ§é ãã¹ã¿ã¤ã«ãå 容ã夿´ãããã¨ãã§ãã¾ãã DOM ã¯ææ¸ããã¼ãã¨ãªãã¸ã§ã¯ãã§è¡¨ç¾ãã¾ãããããã£ã¦ãããã°ã©ãã³ã°è¨èªããã¼ã¸ã«æ¥ç¶ãããã¨ãã§ãã¾ãã
ã¦ã§ããã¼ã¸ã¯ããã©ã¦ã¶ã¼ã®ã¦ã£ã³ãã¦ã«è¡¨ç¤ºãããã HTML ã½ã¼ã¹ã¨ãã¦è¡¨ç¤ºããããããã¨ãå¯è½ãªææ¸ã§ããã©ã¡ãã®å ´åãåãææ¸ã§ãããããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã« (DOM) ã§æä½ãããã¨ãã§ãã¾ãã DOM ã¯ã¦ã§ããã¼ã¸ã®å®å ¨ãªãªãã¸ã§ã¯ãæåã®è¡¨ç¾ã§ã JavaScript ã®ãããªã¹ã¯ãªããè¨èªãã夿´ãããã¨ãã§ãã¾ãã
ä¾ãã°ã DOM ã¯ãã®ã³ã¼ãã¹ããããå
ã«ãã querySelectorAll
ã¡ã½ããããææ¸å
ã«ãããã¹ã¦ã® <p>
è¦ç´ ã®ãªã¹ããè¿ããªããã°ãªããªãã¨å®ç¾©ãã¦ãã¾ãã
const paragraphs = document.querySelectorAll("p");
// paragraphs[0] ã¯æåã® <p> è¦ç´
// paragraphs[1] 㯠2 çªç®ã® <p> è¦ç´ ããªã©
alert(paragraphs[0].nodeName);
ã¦ã§ããã¼ã¸ãæä½ãããã使ãããããããã«ç¨æããã¦ãããã¹ã¦ã®ããããã£ãã¡ã½ãããã¤ãã³ãã¯ããªãã¸ã§ã¯ãã«ã¾ã¨ãããã¦ãã¾ããä¾ãã°ãææ¸èªèº«ã表ç¾ãã document
ãªãã¸ã§ã¯ããã HTML ã®ãã¼ãã«ã«ã¢ã¯ã»ã¹ããããã®ç¹å¥ãª HTMLTableElement
DOM ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãã table
ãªãã¸ã§ã¯ãããªã©ãããã¾ãã
ç¾å¨ã® DOM ã¯å調ãã¦åä½ããè¤æ° API ã«ãã£ã¦æ§ç¯ããã¦ãã¾ãã ã³ã¢ DOM ã¯ãææ¸ããã®ä¸ã®ãªãã¸ã§ã¯ããåºç¤çã«è¨è¿°ãããªãã¸ã§ã¯ããå®ç¾©ãã¦ãã¾ãã ããã¯å¿ è¦ã«å¿ã㦠DOM ã«æ°ããæ©è½ãè½åã追å ããä»ã® API ã«ãã£ã¦æ¡å¼µããã¾ãã ä¾ãã°ã HTML DOM API ã¯ã³ã¢ DOM ã« HTML ææ¸ã®è¡¨ç¾ã®å¯¾å¿ãã SVG API 㯠SVG ææ¸ã®è¡¨ç¾ã®å¯¾å¿ã追å ãã¦ãã¾ãã
DOM 㨠JavaScriptã»ã¼ãã¹ã¦ã®ä¾ã¨åæ§ã«ãä¸ã®çãä¾ã¯ JavaScript ã§ããã¤ã¾ãã JavaScript ã§æ¸ããã¦ãã¾ãããããã DOM ã使ç¨ãã¦ã¦ã§ããã¼ã¸ã¨ãã®è¦ç´ ã«ã¢ã¯ã»ã¹ãã¦ãã¾ãã DOM ã¯ããã°ã©ãã³ã°è¨èªã§ã¯ããã¾ããããããããªãã¨ã JavaScript è¨èªã¯ã¦ã§ããã¼ã¸ã HTML ææ¸ã SVG ææ¸ãããã³ãã®æ§æé¨åã®ã¢ãã«ãè¨æ³ãæã£ã¦ãã¾ãããææ¸å ã®ãã¹ã¦ã®è¦ç´ â å ¨ä½ã¨ãã¦ã®ææ¸ã headãææ¸å ã®è¡¨ã表ã®è¦åºãã表ã®ã»ã«å ã®ããã¹ã â ã¯ããã®ææ¸ã®ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã«ã®ä¸é¨ã§ãã®ã§ã DOM 㨠JavaScript ã®ãããªã¹ã¯ãªããè¨èªãéãã¦ããããã¹ã¦ã«ã¢ã¯ã»ã¹ããæä½ãããã¨ãã§ãã¾ãã
DOM 㯠JavaScript è¨èªã®ä¸é¨ã§ã¯ãªããã¦ã§ããµã¤ããæ§ç¯ããããã«ä½¿ç¨ããã Web API ã® 1 ã¤ã§ãã JavaScript ã¯ä»ã®ã³ã³ããã¹ãã§ä½¿ããããã¨ãããã¾ãã ä¾ãã°ã Node.js ã¯ã³ã³ãã¥ã¼ã¿ã¼ä¸ã§ JavaScript ããã°ã©ã ãå®è¡ãã¾ãããç°ãªã API ã®ã»ãããæä¾ãã¦ããã DOM API 㯠Node.js ã©ã³ã¿ã¤ã ã®ã³ã¢é¨åã«ã¯ãªãã¾ããã
DOM ã¯ãç¹å®ã®ããã°ã©ãã³ã°è¨èªããç¬ç«ããææ¸ã®æ§é 表ç¾ãåä¸ã®ä¸è²«ãã API ããå©ç¨ã§ããããã«è¨è¨ããã¦ãã¾ãã ã»ã¨ãã©ã®ã¦ã§ãéçºè ã JavaScript ã§ãã DOM ã使ç¨ããªãã¨ãã¦ãããã® Python ã®ä¾ã示ãããã«ã DOM ã®å®è£ ã¯ã©ã®è¨èªã§ãæ§ç¯ãããã¨ãã§ãã¾ãã
# Python DOM example
import xml.dom.minidom as m
doc = m.parse(r"C:\Projects\Py\chap1.xml")
doc.nodeName # DOM property of document object
p_list = doc.getElementsByTagName("para")
ã¦ã§ãã§ JavaScript ãæ¸ãããã«ã©ã®ãããªæè¡ã使ãããã®ãã«ã¤ãã¦ã®è©³ç´°ã¯ã JavaScript æè¡æ¦è¦ãã覧ãã ããã
DOM ã¸ã®ã¢ã¯ã»ã¹DOM ã使ãå§ããã®ã«ãç¹å¥ãªãã®ã¯å¿ è¦ããã¾ããã ãã©ã¦ã¶ã¼ã§å®è¡ãããããã°ã©ã ã§ããã¹ã¯ãªããã¨å¼ã°ãããã®ã®ä¸ããã JavaScript ã§ç´æ¥ API ã使ç¨ããã®ã§ãã
ã¹ã¯ãªããã使ããã¨ãã¤ã³ã©ã¤ã³ã® <script>
è¦ç´ ã§ãããã¨ãã¦ã§ããã¼ã¸ã«å«ã¾ãã¦ãããã¨ãããã« document
ã window
ãªãã¸ã§ã¯ãã® API ã使ã£ã¦ãææ¸èªä½ãã¦ã§ããã¼ã¸å
ã®æ§ã
ãªè¦ç´ ï¼ææ¸ã®åå«è¦ç´ ï¼ãæä½ãå§ãããã¨ãã§ããããã«ãªãã®ã§ãã DOM ããã°ã©ãã³ã°ã¯ã次ã®ä¾ã®ããã«ã console.log()
颿°ã使ã£ã¦ã³ã³ã½ã¼ã«ã«ã¡ãã»ã¼ã¸ã表示ããããããªç°¡åãªãã®ã§ãã£ã¦ããã¾ãã¾ããã
<body onload="console.log('ãã¼ã ãã¼ã¸ã¸ãããã!');">
â¦
</body>
ä¸è¬ã«ããã¼ã¸ã®æ§é ï¼HTML ã§è¨è¿°ï¼ã¨ DOM ã®æä½ï¼JavaScript ã§è¨è¿°ï¼ãæ··å¨ããããã¨ã¯æ¨å¥¨ãããªããããããã§ã¯ JavaScript é¨åãã¾ã¨ãã HTML ã¨ã¯åãé¢ãã¦è¨è¿°ãããã¨ã«ãã¾ãã
ä¾ãã°ã次ã®é¢æ°ã¯ãæ°ãã h1 è¦ç´ ãçæãããã®è¦ç´ ã«ããã¹ãã追å ããææ¸ããªã¼ã«è¿½å ãã¾ãã
<html lang="en">
<head>
<script>
// ãã®é¢æ°ã¯ææ¸ãèªã¿è¾¼ã¾ããæã«å®è¡ããã
window.onload = () => {
// 空㮠HTML ãã¼ã¸ã« 2 ã¤ã®è¦ç´ ã使
const heading = document.createElement("h1");
const headingText = document.createTextNode("Big Head!");
heading.appendChild(headingText);
document.body.appendChild(heading);
};
</script>
</head>
<body></body>
</html>
åºæ¬çãªãã¼ã¿å
ãã®ãã¼ã¸ã§ã¯ãæ§ã ãªãªãã¸ã§ã¯ãã¨åããªãã¹ãç°¡åãªæ¹æ³ã§èª¬æãã¾ããããããAPI ã«æ¸¡ããããæ³¨æããªããã°ãªããªããã¼ã¿åã¯ããããããã¾ãã
ã¡ã¢: DOM ã使ç¨ããã³ã¼ãã®å¤§é¨å㯠HTML ææ¸ã®æä½ãä¸å¿ã¨ãã¦ãããããDOM å ã®ãã¼ããè¦ç´ ã¨å¼ã¶ã®ãä¸è¬çã§ãããå³å¯ã«ã¯ãã¹ã¦ã®ãã¼ããè¦ç´ ã¨ããããã§ã¯ããã¾ããã
以ä¸ã®è¡¨ã¯ãããã®ãã¼ã¿ã®ç¨®é¡ãç°¡åã«èª¬æãã¦ãã¾ãã
ãã¼ã¿å (ã¤ã³ã¿ã¼ãã§ã¤ã¹) 説æDocument
ã¡ã³ãã¼ã document
åã®ãªãã¸ã§ã¯ããè¿ãã¨ãã¯ï¼ä¾ãã°ãè¦ç´ ã® ownerDocument
屿§ã¯ãããå±ãã document
ãè¿ãã¾ãï¼ããã®ãªãã¸ã§ã¯ãã¯ã«ã¼ãã® document
è¦ç´ èªèº«ã«ãªãã¾ãã DOM document
ãªãã¡ã¬ã³ã¹ã®ç« ã§ã¯ document
ãªãã¸ã§ã¯ãã説æãã¦ãã¾ãã Node
ææ¸å
ã«ãããã¹ã¦ã®ãªãã¸ã§ã¯ãã¯ä½ããã®ç¨®é¡ã®ãã¼ãã§ãã HTML ææ¸ã§ã¯ããªãã¸ã§ã¯ãã¯è¦ç´ ãã¼ãã ãã§ãªããããã¹ããã¼ãã屿§ãã¼ããããã¾ãã Element
element
å㯠node
ã«åºã¥ãã¦ãã¾ããããã¯è¦ç´ ãããªãã¡ DOM API ã®ã¡ã³ãã¼ããè¿ããã element
åã®ãã¼ãã表ãã¾ããä¾ãã° document.createElement()
ã¡ã½ãã㯠node
ã¸ã®ãªãã¸ã§ã¯ãåç
§ãè¿ãã¨ããããããã®ã¡ã½ããã¯åã« DOM ã«ãã£ã¦çæããã element
ãè¿ãã¨è¨ãã¾ãã element
ãªãã¸ã§ã¯ã㯠DOM ã® Element
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ããã£ã¨åºæ¬ç㪠Node
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãã¦ããã両æ¹ããã®åç
§ã«å«ã¾ãã¾ãã HTML ææ¸ã§ã¯ãè¦ç´ ã¯ããã« HTML DOM API ã® HTMLElement
ã¤ã³ã¿ã¼ãã§ã¤ã¹ããç¹å®ã®ç¨®é¡ã®è¦ç´ ã«ãããè½åãè¨è¿°ããããã®ãã®ä»ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ï¼ä¾ãã° <table>
è¦ç´ ã«ããã HTMLTableElement
ï¼ã«ãã£ã¦æ´ã«æ¡å¼µããã¦ãã¾ãã NodeList
nodeList
ã¯è¦ç´ ã®é
åã§ãä¾ãã° document.querySelectorAll()
ã§è¿ããããã®ãªã©ã§ãã nodeList
ã®ä¸ã®é
ç®ã¯ãæ·»åã使ã£ã¦ä»¥ä¸ã® 2 éãã®æ¹æ³ã§åå¾ã§ãã¾ãã
item()
㯠nodeList
ãªãã¸ã§ã¯ãã®ä¸ã¤ã®é¢æ°ã§ããå¾è
ã®æ¹ã¯ãä¸è¬çãªé
åã®æ§æã使ãããªã¹ãä¸ã®äºã¤ç®ã®é
ç®ãåå¾ãã¦ãã¾ãã Attr
attribute
ãï¼createAttribute()
ã¡ã½ãããªã©ã®ï¼ã¡ã³ãã¼ããè¿ãããã¨ãã屿§ã®ããã®ç¹å¥ãªï¼ãã ããå°ããªï¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãããªãã¸ã§ã¯ãã®åç
§ã§ãã屿§ã¯è¦ç´ ã®ãã㪠DOM ã®ãã¼ãã§ããããã»ã©ä½¿ããã¾ããã NamedNodeMap
namedNodeMap
ã¯é
åã®ããã§ãããååã¾ãã¯æ·»åã«ãã£ã¦é
ç®ã«ã¢ã¯ã»ã¹ã§ãã¾ãããå¾è
ã¯é
ç®ããªã¹ãä¸ã«ç¹å®ã®é çªã§ä¸¦ãã§ãã訳ã§ã¯ãªãã®ã§ãåæããã®ã«ä¾¿å©ã§ããã ãã§ãããã®ããã« namedNodeMap
ã«ã¯ item()
ã¡ã½ãããããã namedNodeMap
ã«é
ç®ã追å ããããåé¤ããããããã¨ãã§ãã¾ãã
注æãã¹ãç¨èªã®ä½¿ãæ¹ãããã¤ãããã¾ããä¾ãã°ããã Attr
ãã¼ããåç
§ããã®ã«åã« attribute
ã¨å¼ãã ãã DOM ãã¼ãã®é
åãåç
§ããã®ã« nodeList
ã¨å¼ãã ããã¾ãããã®ãããªç¨èªã¯ææ¸ãéãã¦ç´¹ä»ãã使ç¨ããã¦ããã®ãåããã§ãããã
ãã®ã¬ã¤ãã¯ã DOM é層æ§é ãæä½ããããã«å©ç¨ã§ãããªãã¸ã§ã¯ãã¨ãå®éã®ãã®ã«ã¤ãã¦è§¦ãã¾ããã©ã®ããã«åä½ããããçè§£ããä¸ã§ãæ··ä¹±ãå¬ããããããªãç¹ãããããããã¾ããä¾ãã°ã HTML ã® form
è¦ç´ ã表ããªãã¸ã§ã¯ãã«ã¯ã name
ããããã£ã HTMLFormElement
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ãã䏿¹ã className
ããããã£ã HTMLElement
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ããã¾ããã©ã¡ãã«ãã¦ããæ±ããããããã£ã¯ãã® form ãªãã¸ã§ã¯ãã®ä¸ã«ããã¾ãã
ãããã DOM ã§å®è£ ããã¦ãããªãã¸ã§ã¯ãã¨ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®é¢ä¿ã¯è¤éãªã®ã§ããã®ç¯ã§ã¯ã DOM ã®ä»æ§ã§ã®å®éã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ãããã©ã®ããã«å©ç¨ã§ãããã«ã¤ãã¦å°ã説æãããã¨æãã¾ãã
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ãªãã¸ã§ã¯ãå¤ãã®ãªãã¸ã§ã¯ãã¯è¤æ°ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãç¶æ¿ãã¦ãã¾ããä¾ãã°ã table ãªãã¸ã§ã¯ãã§ã¯ãç¹å¥ãª HTMLTableElement
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãã¦ããããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ createCaption
ã insertRow
ãªã©ã®ã¡ã½ãããå«ãã§ãã¾ãããããã table
㯠HTML ã®è¦ç´ ã§ãããã®ã§ã DOM ã® Element
ãªãã¡ã¬ã³ã¹ã®ç« ã§èª¬æãã¦ãã Element
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ãã¦ãã¾ããããã«ã¯ã HTML ã®è¦ç´ ã¯ã DOM ãèæ
®ããéããã¦ã§ããã¼ã¸ã XML ãã¼ã¸ã®ãªãã¸ã§ã¯ãã¢ãã«ãä½ãããããã¼ãã®ããªã¼å
ã«ãããã¼ããã§ããã®ã§ã table ãªãã¸ã§ã¯ãã¯ããåºæ¬ç㪠Node
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãã Element
ããç¶æ¿ãã¦å®è£
ãã¦ãã¾ãã
次ã®ä¾ã®ããã«ã table
ãªãã¸ã§ã¯ãã®åç
§ãå
¥æããã¨ãã¯ãããããç¡æèã«ããã®ãªãã¸ã§ã¯ãã®ä¸ã¤ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãããæ®éã«äº¤äºã«ä½¿ãã¾ãã
const table = document.getElementById("table");
const tableAttrs = table.attributes; // Node/Element ã¤ã³ã¿ã¼ãã§ã¤ã¹
for (let i = 0; i < tableAttrs.length; i++) {
// HTMLTableElement ã¤ã³ã¿ã¼ãã§ã¤ã¹: border 屿§
if (tableAttrs[i].nodeName.toLowerCase() === "border") {
table.border = "1";
}
}
// HTMLTableElement ã¤ã³ã¿ã¼ãã§ã¤ã¹: summary 屿§
table.summary = "note: increased border";
DOM ã®ä¸ã§æ ¸ã¨ãªãã¤ã³ã¿ã¼ãã§ã¤ã¹
ãã®ç¯ã§ã¯ã DOM ã®ä¸ã§æããã使ãããã¤ã³ã¿ã¼ãã§ã¤ã¹ãåæãã¾ããAPI ãããã§ä½ããã¦ãããè¨è¿°ããã®ã§ã¯ãªããDOM ã®ä¸ã§é常ã«è¯ã使ããã颿°ã屿§ãã¡ãã£ã¨ç¤ºãã®ãçãã§ããããããã使ããã API ã¯ãã®æ¬ã®æå¾ã® DOM ã®ä¾ã®ç« ã®ããé·ãä¾ã®ä¸ã§ä½¿ããã¦ãã¾ãã
document
㨠window
ãªãã¸ã§ã¯ããä¸è¬çã« DOM ããã°ã©ãã³ã°ã®ä¸ã§æããã使ããã¾ããç°¡åã«è¨ãã¨ã window
ãªãã¸ã§ã¯ãã¯ãã©ã¦ã¶ã¼ã®ãããªãã®ã表ç¾ãã document
ãªãã¸ã§ã¯ãã¯ææ¸ã®ã«ã¼ãèªèº«ã§ãã Element
ã¯ä¸è¬ç㪠Node
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãç¶æ¿ãã¦ãã¦ããããã¦ãã® 2 ã¤ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ããã®è¦ç´ ã§ä½¿ãããå¤ãã®é¢æ°ã¨å±æ§ãæä¾ãã¾ããåç¯ã§ã® table
ãªãã¸ã§ã¯ãã®ä¾ã®ããã«ãããã®è¦ç´ ã¯ãããããæã¤ãã¼ã¿ãæ±ãããã®ç¹å®ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãæã£ã¦ããå ´åãããã¾ãã
以ä¸ã¯ã DOM ã使ãã¦ã§ãã XML ãã¼ã¸ã®ã¹ã¯ãªããã§ãã使ããã API ã®ç°¡åãªä¸è¦§ã§ãã
document.querySelector()
document.querySelectorAll()
document.createElement()
Element.innerHTML
Element.setAttribute()
Element.getAttribute()
EventTarget.addEventListener()
HTMLElement.style
Node.appendChild()
window.onload
window.scrollTo()
ãã®ä¾ã§ã¯ã <div>
è¦ç´ ã« <textarea>
㨠2 ã¤ã® <button>
è¦ç´ ãå
¥ã£ã¦ãã¾ããã¦ã¼ã¶ã¼ãæåã®ãã¿ã³ãã¯ãªãã¯ããã¨ã <textarea>
ã«ããã¹ããè¨å®ãã¾ããã¦ã¼ã¶ã¼ã 2 ã¤ç®ã®ãã¿ã³ãã¯ãªãã¯ããã¨ããã®ããã¹ããæ¶å»ãã¾ãã使ç¨ãã¦ãããã®ã¯æ¬¡ã®éãã§ãã
Document.querySelector()
ã§ <textarea>
ã¨ãã¿ã³ã«ã¢ã¯ã»ã¹ããEventTarget.addEventListener()
ã§ãã¿ã³ã®ã¯ãªãã¯ãå¾
ã¡åãããNode.textContent
ã§ããã¹ããè¨å®ãããæ¶å»ããããã<div class="container">
<textarea class="story"></textarea>
<button id="set-text" type="button">ããã¹ãã³ã³ãã³ããè¨å®</button>
<button id="clear-text" type="button">ããã¹ãã³ã³ãã³ããæ¶å»</button>
</div>
CSS
.container {
display: flex;
gap: 0.5rem;
flex-direction: column;
}
button {
width: 200px;
}
JavaScript
const story = document.body.querySelector(".story");
const setText = document.body.querySelector("#set-text");
setText.addEventListener("click", () => {
story.textContent = "æãã¦åµã®ãããªå¤ã§ãã...";
});
const clearText = document.body.querySelector("#clear-text");
clearText.addEventListener("click", () => {
story.textContent = "";
});
çµæ åè¦ç´ ã®è¿½å
ãã®ä¾ã§ã¯ã <div>
è¦ç´ ã« <div>
㨠2 ã¤ã® <button>
è¦ç´ ãå
¥ã£ã¦ãã¾ããã¦ã¼ã¶ã¼ãæåã®ãã¿ã³ãã¯ãªãã¯ããã¨ãæ°ããè¦ç´ ã使ãã <div>
ã®åè¦ç´ ã¨ãã¦è¿½å ãã¾ããã¦ã¼ã¶ã¼ã 2 ã¤ç®ã®ãã¿ã³ãã¯ãªãã¯ããããåè¦ç´ ãé¤å»ãã¾ãã使ç¨ãã¦ãããã®ã¯æ¬¡ã®éãã§ãã
Document.querySelector()
ã§ <div>
ã¨ãã¿ã³ã«ã¢ã¯ã»ã¹ããEventTarget.addEventListener()
ã§ãã¿ã³ã®ã¯ãªãã¯ãå¾
ã¡åãããDocument.createElement
ã§è¦ç´ ã使ããNode.appendChild()
ã§åè¦ç´ ã追å ããNode.removeChild()
ã§åè¦ç´ ãé¤å»ãã<div class="container">
<div class="parent">親</div>
<button id="add-child" type="button">åã追å </button>
<button id="remove-child" type="button">åãé¤å»</button>
</div>
CSS
.container {
display: flex;
gap: 0.5rem;
flex-direction: column;
}
button {
width: 100px;
}
div.parent {
border: 1px solid black;
padding: 5px;
width: 100px;
height: 100px;
}
div.child {
border: 1px solid red;
margin: 10px;
padding: 5px;
width: 80px;
height: 60px;
box-sizing: border-box;
}
JavaScript
const parent = document.body.querySelector(".parent");
const addChild = document.body.querySelector("#add-child");
addChild.addEventListener("click", () => {
// ããã¹ããã¼ãã親ãã®ä»ã«ãã¾ã åãã¼ãããªãå ´åã®ã¿ã
// åãã¼ãã追å ãã¾ãã
if (parent.childNodes.length > 1) {
return;
}
const child = document.createElement("div");
child.classList.add("child");
child.textContent = "å";
parent.appendChild(child);
});
const removeChild = document.body.querySelector("#remove-child");
removeChild.addEventListener("click", () => {
const child = document.body.querySelector(".child");
parent.removeChild(child);
});
çµæ 仿§æ¸
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4