DOM ãã¼ããããæ·±ãè¦ã¦ããã¾ãããã
ãã®ç« ã§ã¯ããããä½è ã§ããããããã¦ãã使ãããããããã£ã«ã¤ãã¦è¦ã¦ããã¾ãã
DOM ãã¼ãã¯ã©ã¹
ç°ãªã DOM ãã¼ãã¯ç°ãªãããããã£ãæã¡ã¾ããä¾ãã°ãã¿ã° <a> ã«å¯¾å¿ããè¦ç´ ãã¼ãã¯ãªã³ã¯é¢é£ã®ããããã£ãæã£ã¦ããã<input> ã«å¯¾å¿ããè¦ç´ ãã¼ãã¯å
¥åé¢é£ã®ããããã£ãæã£ã¦ãã¾ããããã¹ããã¼ãã¯è¦ç´ ãã¼ãã¨ã¯éãã¾ããããã¹ã¦ã® DOM ãã¼ãã®ã¯ã©ã¹ã¯1ã¤ã®ã®é層ãå½¢æããããããã¹ã¦ã®ãã¼ãã§å
±éã®ããããã£ãã¡ã½ãããããã¾ãã
å DOM ãã¼ãã¯å¯¾å¿ããçµã¿è¾¼ã¿ã¯ã©ã¹ã«å±ãã¦ãã¾ãã
é層ã®ã«ã¼ã㯠EventTarget ã§ããã㯠Node ã«ããç¶æ¿ããã¦ãã¾ããã¾ãä»ã® DOM ãã¼ãã¯ãããç¶æ¿ãã¦ãã¾ãã
ããã«ãå³ã¨èª¬æãããã¾ã:
ã¯ã©ã¹ã¯æ¬¡ã®éãã§ã:
- EventTarget â ã¯ã«ã¼ãã® âæ½è±¡â ã¯ã©ã¹ã§ãããã®ã¯ã©ã¹ã®ãªãã¸ã§ã¯ãã¯çæããã¾ãããããã¯ãã¼ã¹ã¨ãã¦æ©è½ãããã¹ã¦ã® DOM ãã¼ãã¯ãããã âã¤ãã³ãâ ããµãã¼ããã¾ããã¤ãã³ãã«ã¤ãã¦ã¯å¾ã»ã©å¦ã³ã¾ãã
- Node â ãã¾ã âæ½è±¡â ã¯ã©ã¹ã§ãDOM ãã¼ãã®åºåºã¨ãã¦æ©è½ãã¾ããããã¯ã³ã¢ãªããªã¼æ©è½ãæä¾ãã¾ãã:
parentNode,nextSibling,childNodesãªã©(ããã㯠getter ã§ã)ãNodeã¯ã©ã¹ã®ãªãã¸ã§ã¯ãã¯æ±ºãã¦çæããã¾ããããããããããç¶æ¿ããå ·ä½çãªãã¼ãã¯ã©ã¹ãå³ã¡: ããã¹ããã¼ãã®Text, è¦ç´ ãã¼ãã®Elementããã³ã¡ã³ããã¼ãã®ããã®Commentãªã©ãããã¾ãã - Element â 㯠DOM è¦ç´ ã®ãã¼ã¹ã¯ã©ã¹ã§ãã
nextElementSibling,childrenãgetElementsByTagName,querySelectorçã®æ¤ç´¢ã¡ã½ããã¨ãã£ããè¦ç´ ã¬ãã«ã®ããã²ã¼ã·ã§ã³ãæä¾ãã¾ãããã©ã¦ã¶ã§ã¯ãHTML ã ãã§ãªããXML ã SVG ã®ããã¥ã¡ã³ããããå ´åãããã¾ããElementã¯ã©ã¹ã¯SVGElementãXMLElementãHTMLElementã¨ãã£ãããå ·ä½çãªã¯ã©ã¹ã®ãã¼ã¹ã¨ãã¦æ©è½ãã¾ãã - HTMLElement â ã¯æçµçã«ãã¹ã¦ã®HTMLè¦ç´ ã®ãã¼ã¹ã¯ã©ã¹ã§ããè²ã
㪠HTMLè¦ç´ ããããç¶æ¿ãã¦ãã¾ãã:
- HTMLInputElement â
<input>è¦ç´ ã®ããã®ã¯ã©ã¹, - HTMLBodyElement â
<body>è¦ç´ ã®ããã®ã¯ã©ã¹, - HTMLAnchorElement â
<a>ãè¦ç´ ã®ããã®ã¯ã©ã¹ - â¦ãªã©ãåã¿ã°ã¯åºæã®ããããã£ãã¡ã½ãããæä¾ããç¬èªã®ã¯ã©ã¹ãæã£ã¦ãã¾ãã
- HTMLInputElement â
<span>, <section>, <article> ã®ãããªããããã£ã¯åºæã®ããããã£ãæããªã䏿¹ã§ãåºæã®ããããã£ãã¡ã½ããããã¤ç¬èªã®ã¯ã©ã¹ãæã¤ä»ã®å¤ãã®ã¿ã°ãããã¾ãã
ãã®ãããæå®ããããã¼ãã®ããããã£ã¨ã¡ã½ããã®ãã«ã»ããã¯ç¶æ¿ã®çµæã¨ãã¦å¾ããã¾ãã
ä¾ãã°ã<input> è¦ç´ ã® DOM ãªãã¸ã§ã¯ããèãã¦ã¿ã¾ãããããã㯠HTMLInputElement ã¯ã©ã¹ã«å±ãã¦ãã¾ãã
ããã¯ã次ã®éãåããã¨ãã¦ããããã£ã¨ã¡ã½ãããåå¾ãã¾ã(ç¶æ¿é ã§ãªã¹ããã¦ãã¾ã):
HTMLInputElementâ ãã®ã¯ã©ã¹ã¯å ¥ååºæã®ããããã£ãæä¾ããæ¬¡ãç¶æ¿ãã¦ãã¾ããHTMLElementâ å ±éã®HTMLè¦ç´ ã¡ã½ãã (ã¨getter/setter)ãæä¾ããæ¬¡ãç¶æ¿ãã¦ãã¾ããElementâ ä¸è¬çãªè¦ç´ ã®ã¡ã½ãããæä¾ããæ¬¡ãç¶æ¿ãã¦ãã¾ããNodeâ å ±éã® DOM ãã¼ãã®ããããã£ãæä¾ããæ¬¡ãç¶æ¿ãã¦ãã¾ããEventTargetâ (対象ã¨ãªã)ã¤ãã³ãããµãã¼ããã- â¦ããã¦æå¾ã«ãããã¯
Objectãç¶æ¿ãã¦ãã¾ãããªã®ã§ãhasOwnPropertyã®ãã㪠âç´ç²ãªãªãã¸ã§ã¯ãâ ã¡ã½ãããå©ç¨å¯è½ã§ãã
DOM ãã¼ãã®ã¯ã©ã¹åãè¦ãã«ããªãã¸ã§ã¯ãã¯é常 constructor ããããã£ãæã£ã¦ãããã¨ãæãåºãã¦ãã ããã ããã¯ã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãåç
§ãã constructor.name ã¯ãã®ååã§ã:
alert( document.body.constructor.name ); // HTMLBodyElement
â¦ãããã¯ãã® toString:
alert( document.body ); // [object HTMLBodyElement]
ã¾ããç¶æ¿ãã§ãã¯ã« instanceof ã使ããã¨ãã§ãã¾ã:
alert( document.body instanceof HTMLBodyElement ); // true
alert( document.body instanceof HTMLElement ); // true
alert( document.body instanceof Element ); // true
alert( document.body instanceof Node ); // true
alert( document.body instanceof EventTarget ); // true
ã覧ã®éããDOM ãã¼ãã¯é常㮠JavaScript ãªãã¸ã§ã¯ãã§ãããããã¯ç¶æ¿ã®ããã«ãããã¿ã¤ããã¼ã¹ã®ã¯ã©ã¹ã使ãã¾ãã
ãã©ã¦ã¶ãconsole.dir(elem) ã使ã£ãè¦ç´ ã®åºåã§ãç°¡åã«è¦ããã¨ãã§ãã¾ããã³ã³ã½ã¼ã«ã§ã¯ãHTMLElement.prototype, Element.prototype ãªã©ãè¦ããã¨ãã§ãã¾ãã
console.dir(elem) VS console.log(elem)ã»ã¨ãã©ã®ãã©ã¦ã¶ã¯ãéçºè
ãã¼ã«ã§2ã¤ã®ã³ãã³ãããµãã¼ããã¦ãã¾ããconsole.log 㨠console.dir ã§ãããããã¯å¼æ°ãã³ã³ã½ã¼ã«ã«åºåãã¾ããJavaScript ãªãã¸ã§ã¯ãã«å¯¾ãã¦ã¯é常åãåä½ããã¾ãã
ããããDOM è¦ç´ ã«å¯¾ãã¦ã¯ç°ãªãã¾ãã:
console.log(elem)ã¯è¦ç´ ã® DOM ããªã¼ã表示ãã¾ãconsole.dir(elem)㯠DOM ãªãã¸ã§ã¯ãã¨ãã¦è¦ç´ ã表示ãã¾ããããããã£ã調ã¹ãã®ã«ã¯è¯ãã§ãã
document.body ã§ããã使ã£ã¦ã¿ã¦ãã ããã
ã¹ããã¯ã§ã¯ãã¯ã©ã¹ã¯ JavaScript ã§ã¯ãªããç¹å¥ãª Interface description language (IDL) ã使ã£ã¦èª¬æããã¦ãã¾ããããã¯çè§£ããããã§ãã
IDL ã§ã¯ããã¹ã¦ã®ããããã£ã®åãåã«ã¤ãã¦ãã¾ããä¾ãã° DOMString, boolean ãªã©ã§ãã
ããã¯ããããã®æç²ã¨ã³ã¡ã³ãã§ã:
// HTMLInputElement ã®å®ç¾©
// ã³ãã³ ":" 㯠HTMLInputElement 㯠HTMLElement ãç¶æ¿ãã¦ãããã¨ãæå³ãã¾ãã
interface HTMLInputElement: HTMLElement {
// ããã« <input> è¦ç´ ã®ããããã£ã¨ã¡ã½ãããããã¾ã
// "DOMString" ã¯ããããã£ãæååã§ãããã¨ãæå³ãã¾ãã
attribute DOMString accept;
attribute DOMString alt;
attribute DOMString autocomplete;
attribute DOMString value;
// boolean ãããã㣠(true/false)
attribute boolean autofocus;
...
// ããã¯ã¡ã½ããã§ã: "void" ã¯è¿å´å¤ãªããæå³ãã¾ãã
void select();
...
}
ânodeTypeâ ããããã£
nodeType ããããã£ã¯ DOM ãã¼ãã® âã¿ã¤ãâ ãåå¾ããæãªããã®æ¹æ³ã§ãã
æ¬¡ã®æ°å¤ãæã£ã¦ãã¾ã:
elem.nodeType == 1ã¯è¦ç´ ãã¼ã,elem.nodeType == 3ã¯ããã¹ããã¼ã,elem.nodeType == 9ã¯ããã¥ã¡ã³ããªãã¸ã§ã¯ã,- ã¹ãã㯠ã§ã¯ããããã¤ãã®å¤ãããã¾ãã
ä¾ãã°:
<body>
<script>
let elem = document.body;
// ãããä½ãã調ã¹ã¦ã¿ã¾ããã
alert(elem.nodeType); // 1 => element
// æåã®åã¯...
alert(elem.firstChild.nodeType); // 3 => text
// ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¯ãã¿ã¤ã㯠9 ã§ã
alert( document.nodeType ); // 9
</script>
</body>
ç¾å¨ã®ã¹ã¯ãªããã§ã¯ãinstanceof ã¨ä»ã®ã¯ã©ã¹ãã¼ã¹ã®ãã¹ãã使ã£ã¦ãã¼ãã¿ã¤ããè¦ããã¨ãã§ãã¾ãããnodeType ã®æ¹ãã·ã³ãã«ãªã¨ããããã¾ããnodeType ã¯åç
§ã®ã¿ã§å¤æ´ã¯ã§ãã¾ããã
ã¿ã°: nodeName 㨠tagName
ä¸ãããã DOM ãã¼ãã«å¯¾ãã¦ãnodeName ã¾ã㯠tagName ããããã£ã§ãã®ã¿ã°ã®ååãè¦ããã¨ãã§ãã¾ãã:
ä¾:
alert( document.body.nodeName ); // BODY
alert( document.body.tagName ); // BODY
tagName 㨠nodeName ã®éãã¯ãªã«ã§ããããï¼
ãã¡ããããã®éãã¯ãããã®ååã«åæ ããã¦ãã¾ãããå®éã¯å°ãå¾®å¦ã§ãã
tagNameããããã£ã¯Elementãã¼ãã«å¯¾ãã¦ã®ã¿åå¨ãã¾ããnodeNameã¯ä»»æã®Nodeã§å®ç¾©ããã¦ãã¾ã:- è¦ç´ ã®å ´åã¯ã
tagNameã¨åãæå³ã§ãã - ä»ã®ãã¼ãã¿ã¤ã(ããã¹ããã³ã¡ã³ããªã©)ã®å ´åããã¼ãã¿ã¤ãã®æååãæã¡ã¾ãã
- è¦ç´ ã®å ´åã¯ã
ã¤ã¾ããtagName ã¯è¦ç´ ãã¼ã(Element ã¯ã©ã¹ããå§ã¾ã)ã«ãã£ã¦ã®ã¿ãµãã¼ãããã¦ãã¾ãã䏿¹ãnodeName ã¯ä»ã®ãã¼ãã¿ã¤ãã«ã¤ãã¦ãªä½ãè¨ããã¨ãã§ãã¾ãã
ä¾ãã°ãdocument ãã¼ãã¨ã³ã¡ã³ããã¼ãã«å¯¾ãã¦ãtagName 㨠nodeName ãæ¯è¼ãã¦ã¿ã¾ãããã:
<body><!-- comment -->
<script>
// for comment
alert( document.body.firstChild.tagName ); // undefined (not element)
alert( document.body.firstChild.nodeName ); // #comment
// for document
alert( document.tagName ); // undefined (not element)
alert( document.nodeName ); // #document
</script>
</body>
è¦ç´ ã ããæ±ãå ´åãtagName 㨠nodeName ã©ã¡ããå©ç¨ã§ããããã«å·®ã¯ããã¾ããã
ãã©ã¦ã¶ã¯ããã¥ã¡ã³ããå¦çãã2ã¤ã®ã¢ã¼ããæã£ã¦ãã¾ãã: HTML 㨠XML ã§ããé常webãã¼ã¸ã§ã¯HTMLã¢ã¼ãã使ããã¾ããXMLã¢ã¼ãã¯ããã©ã¦ã¶ããããã§XMLããã¥ã¡ã³ããåãåã£ãã¨ãã«æå¹ã«ãªãã¾ãã: Content-Type: application/xml+xhtmlã
HTMLã¢ã¼ãã§ã¯ãtagName/nodeName ã¯å¸¸ã«å¤§æåã§ã: <body> ã¾ã㯠<BoDy> 㯠BODY ã§ãã
XMLã¢ã¼ãã§ã¯ãæåã®å¤§å°ã¯ âãã®ã¾ã¾â ç¶æããã¾ããæè¿ XML ã¢ã¼ãã¯ã»ã¨ãã©ä½¿ããã¾ããã
innerHTML: ã³ã³ãã³ã
innerHTMLããããã£ã¯è¦ç´ å ã® HTML ãæååã¨ãã¦åå¾ãããã¨ãã§ãã¾ãã
ããã夿´ãããã¨ãã§ãã¾ãããªã®ã§ããã¼ã¸ã夿´ããæãå¼·åãªæ¹æ³ã®1ã¤ã§ãã
ãã®ä¾ã¯ document.body ã®ã³ã³ãã³ãã表示ãããã®å¾ãã³ã³ãã³ããå®å
¨ã«ç½®ãæãã¾ã:
<body>
<p>A paragraph</p>
<div>A div</div>
<script>
alert( document.body.innerHTML ); // ç¾å¨ã®å
容ãèªã
document.body.innerHTML = 'The new BODY!'; // ç½®ãæãã
</script>
</body>
ç¡å¹ãª HTML ãæ¿å ¥ãããã¨ããã¨ããã©ã¦ã¶ã¯ã¨ã©ã¼ãä¿®æ£ãã¾ãã:
<body>
<script>
document.body.innerHTML = '<b>test'; // ã¿ã°ã®ã¯ãã¼ãºå¿ã
alert( document.body.innerHTML ); // <b>test</b> (ä¿®æ£ããã)
</script>
</body>
ãã innerHTML ã <script> ã¿ã°ãããã¥ã¡ã³ãã«æ¿å
¥ããå ´åã-- HMLT ã®ä¸é¨ã«ã¯ãªãã¾ãããå®è¡ããã¾ããã
注æ: âinnerHTML+=â ã¯å®å ¨ãªç½®ãæãããã¾ã
elem.innerHTML+="ä½ã" ã使ã£ã¦ âããå¤ãã®HTMLâ ã追å ãããã¨ãã§ãã¾ãã
ãã®ããã«:
chatDiv.innerHTML += "<div>Hello<img src='smile.gif'/> !</div>";
chatDiv.innerHTML += "How goes?";
ãããããããããå ´åã«ã¯ã¨ã¦ã注æãå¿ è¦ã§ãããªããªãè¡ããã¦ãããã¨ã¯è¿½å ã§ã¯ãªã å®å ¨ãªç½®ãæãã ããã§ãã
æè¡çã«ã¯ããããã®2ã¤ã®è¡ã¯åãã§ã:
elem.innerHTML += "...";
// ã¯ã次ã®ã³ã¼ãã®ããçãæ¸ãæ¹ã§ã:
elem.innerHTML = elem.innerHTML + "..."
ã¤ã¾ããinnerHTML+= ã¯æ¬¡ã®ãã¨ããã¾ã:
- å¤ãã³ã³ãã³ãã¯åé¤ããã¾ãã
- 代ããã«æ°ãã
innerHTMLãæ¸ããã¾ã(å¤ããã®ã¨æ°ãããã®ã®é£çµ)ã
ã³ã³ãã³ãã âå®å ¨ã«åãé¤ããâ ãæåããæ¸ãç´ãããã¨ããã¹ã¦ã®ç»åããã®ä»ã®ãªã½ã¼ã¹ã¯ãªãã¼ãããã¾ãã
ä¸ã® chatDiv ã®ä¾ã§ã¯ãè¡ chatDiv.innerHTML+="How goes?" 㯠HTML ã³ã³ãã³ããå使ãã smile.gif ããªãã¼ããã¾ã(ãã£ãã·ã¥ããã¦ãããã¨ãæã¿ã¾ã)ããã chatDiv ãå¤ãã®ããã¹ããç»åãæã£ã¦ããå ´åããªãã¼ããã¯ã£ããè¦ãã¾ãã
åæ§ã«ä»ã®å¯ä½ç¨ãããã¾ããä¾ãã°ãæ¢åã®ããã¹ãããã¦ã¹ã§é¸æããã¦ããå ´åãã»ã¨ãã©ã®ãã©ã¦ã¶ã¯åæ¸ãè¾¼ã¿ãã innerHTML ä¸ã®é¸æãé¤å»ãã¾ããããã¦ã訪åè
ã«ãã£ã¦å
¥åãããããã¹ããæã¤ <input> ãä¼ã£ãå ´åããã®ããã¹ãã¯é¤å»ããã¾ããçã
幸ããinnerHTML ã«å ãã¦HTMLã追å ããä»ã®æ¹æ³ãããã¾ããããã«ããããè¦ã¦ããã¾ãã
outerHTML: è¦ç´ ã®å®å ¨ãª HTML
outerHTML ããããã£ã¯è¦ç´ ã®å®å
¨ãª HTML ãå«ã¿ã¾ãããã㯠innerHTML ã«è¦ç´ èªèº«ãå ãããããªãã®ã§ãã
ä¾:
<div id="elem">Hello <b>World</b></div>
<script>
alert(elem.outerHTML); // <div id="elem">Hello <b>World</b></div>
</script>
注æ: innerHTML ã¨ã¯éããouterHTML ã¸ã®æ¸ãè¾¼ã¿ã¯è¦ç´ ã夿´ãã¾ããã代ããã«ãDOM ã§ç½®ãæãããã¾ãã
ãããå¥å¦ã«èãããããã¯ç¢ºãã«å¥å¦ã§ããããã«ã¤ãã¦è£è¶³ãã¾ããè¦ã¦ã¿ã¾ããã:
ä¾ãèãã¦ã¿ã¾ããã:
<div>Hello, world!</div>
<script>
let div = document.querySelector('div');
// div.outerHTML ã <p>...</p> ã«ç½®ãæã
div.outerHTML = '<p>A new element!</p>'; // (*)
// ãªãã¨! div ã¯ã¾ã åãã§ã!
alert(div.outerHTML); // <div>Hello, world!</div>
</script>
å¥å¦ã«è¦ãã¾ãããï¼
è¡ (*) ã§ã¯ã<div> ã <p>A new element</p> ã«ç½®ãæãã¾ããå¤å´ã®ããã¥ã¡ã³ã(DOM)ã§ã¯ã<div> ã®ä»£ããã«æ°ããã³ã³ãã³ããè¦ãã¾ããããããè¡ (**) ã§ã¯ãå¤ã div 夿°ã¯å¤æ´ããã¦ãã¾ããã
outerHTML ã®ä»£å
¥ã¯ DOM è¦ç´ ï¼åç
§ããã¦ãããªãã¸ã§ã¯ããä»åã®ã±ã¼ã¹ã§ã¯å¤æ° âdivâï¼ã夿´ããã®ã§ã¯ãªããDOM ãããããåé¤ããæ°ããHTMLããã®å ´æã¸æ¿å
¥ãã¾ãã
ãªã®ã§ãdiv.outerHTML=... ã§èµ·ãã¦ãããã¨ã¯ä»¥ä¸ã®éãã§ã:
divãããã¥ã¡ã³ãããåé¤ããã¾ãã- å¥ã® HTML ã®ãã¼ã¹
<p>A new element</p>ããã®å ´ã«æ¿å ¥ããã¾ãã divã¯å¤ãå¤ãæã£ãã¾ã¾ã§ããæ°ããHTMLã¯ã©ãã«ãä¿åããã¦ãã¾ããã
div.outerHTML ã夿´ããdiv ãæ°ããã³ã³ãã³ããã®ããã«æ±ãå¦çãç¶ããã¨ãããã«ã¨ã©ã¼ã«ãªãã§ãããããã®ãããªãã¨ã¯ innerHTML ãªãåé¡ããã¾ããããouterHTML ã§ã¯ãã¾ãããã¾ããã
elem.outerHTML ã§æ¸ãè¾¼ã¿ã¯ã§ãã¾ãããâelemâ ã«æ¸ãè¾¼ãã§ãããã®ã¯å¤ãããªããã¨ã«ã¤ãã¦çæãã¦ããå¿
è¦ãããã¾ãã代ããã«ãã®å ´æã«æ°ããã³ã³ãã³ãã使ãã¾ããDOM ã«åãåããããã¨ã§æ°ããè¦ç´ ãåç
§ãããã¨ãã§ãã¾ãã
nodeValue/data: ããã¹ããã¼ãã®ã³ã³ãã³ã
innerHTML ããããã£ã¯è¦ç´ ãã¼ãã«å¯¾ãã¦ã®ã¿æå¹ã§ãã
ä»ã®ãã¼ãã¿ã¤ãã«ã¯ããã«å¯¾å¿ãããã®ãããã¾ã: nodeValue 㨠data ããããã£ã§ããããã2ã¤ã¯å®éã®å©ç¨ã«ããã¦ã¯ã»ã¨ãã©åãã§ã仿§ä¸å°ãéããããã ãã§ãããªã®ã§ãããçã data ã使ãã¾ãã
ããã¹ããã¼ãã®ã³ã³ãã³ãã¨ã³ã¡ã³ããèªãä¾ã§ã:
<body>
Hello
<!-- Comment -->
<script>
let text = document.body.firstChild;
alert(text.data); // Hello
let comment = text.nextSibling;
alert(comment.data); // Comment
</script>
</body>
ããã¹ããã¼ãã«å¯¾ãã¦ã¯ãããããèªã¿è¾¼ãã ãä¿®æ£ã§ããçç±ãæ³åã§ãã¾ããããããªãã³ã¡ã³ããï¼
次ã®ããã«éçºè ã HTML ã®ä¸ã«æ å ±ããã³ãã¬ã¼ãã®èª¬æãåãè¾¼ããã¨ãããã¾ãã:
<!-- if isAdmin -->
<div>Welcome, Admin!</div>
<!-- /if -->
â¦ããã¦ãJavaScriptã¯ãããèªã¿ãåãè¾¼ã¾ããå½ä»¤ãå¦çãããã¨ãã§ãã¾ãã
textContent: ç´ç²ãªããã¹ã
textContent ã¯è¦ç´ å
ã® ããã¹ã ã¸ã®ã¢ã¯ã»ã¹ãæä¾ãã¾ã: ããã¹ãã ãã§ããã¹ã¦ã® <tags> ãé¤ãã¾ãã
ä¾:
<div id="news">
<h1>Headline!</h1>
<p>Martians attack people!</p>
</div>
<script>
// Headline! Martians attack people!
alert(news.textContent);
</script>
ã覧ã®éãããã¹ã¦ã® <tags> ãåãé¤ãããããã¹ãã ããæ®ãå½¢ã§ããã¹ãã®ã¿ãè¿å´ããã¾ãã
å®éããã®ãããªããã¹ããèªã¿è¾¼ããã¨ã¯ãã£ãã«ããã¾ããã
textContent ã¸ã®æ¸ãè¾¼ã¿ã¯ã¨ã¦ãå½¹ç«ã¡ã¾ãããªããªãããã¹ãã âå®å
¨ãªæ¹æ³â ã§æ¸ããã¨ãã§ããããã§ãã
ä¾ãã°ã¦ã¼ã¶ã«ãã£ã¦å ¥åãããä»»æã®æååã表示ãããã¨ãã¾ãããã
innerHTMLã使ãã¨ããã¹ã¦ã® HTML ã¿ã°ã¨ä¸ç·ã«ãâHTML ã¨ãã¦â æ¿å ¥ããã¾ããtextContentã§ã¯ããã¹ã¦ã®ã·ã³ãã«ã¯æåéãæ±ãããâããã¹ã ã¨ãã¦â æ¿å ¥ããã¾ãã
2ã¤ãæ¯ã¹ã¦ã¿ã¾ã:
<div id="elem1"></div>
<div id="elem2"></div>
<script>
let name = prompt("What's your name?", "<b>Winnie-the-pooh!</b>");
elem1.innerHTML = name;
elem2.textContent = name;
</script>
- æåã®
<div>㯠âHTML ã¨ãã¦â ååãåå¾ãã¾ã: ãã¹ã¦ã®ã¿ã°ã¯ã¿ã°ã«ãªãã®ã§ã太åã®ååã«ãªãã¾ãã - 2ã¤ç®ã®
<div>㯠âããã¹ãã¨ãã¦â ååãåå¾ããã®ã§ãæåéã<b>Winnie-the-pooh!</b>ã¨è¦ãã¾ãã
ã¦ã¼ã¶ã¼ããã®ããã¹ãã¯ããã¹ãã¨ãã¦æ±ããããã¨èãã¦ãã¾ãã ç§ãã¡ã¯äºæãã¬HTMLãç§ãã¡ã®ãµã¤ãã§ã¯æã¿ã¾ããã textContentã¸ã®ä»£å
¥ã¯ãããæ£ç¢ºã«è¡ãã¾ãã
âhiddenâ ããããã£
âhiddenâ 屿§ã¨ DOM ããããã£ã¯è¦ç´ ãè¦ãããã©ãããæå®ãã¾ãã
次ã®ããã« HTML ã®ä¸ãããã㯠JavaScript ã使ã£ãä»£å ¥ã§ä½¿ç¨ã§ãã¾ãã:
<div>Both divs below are hidden</div>
<div hidden>With the attribute "hidden"</div>
<div id="elem">JavaScript assigned the property "hidden"</div>
<script>
elem.hidden = true;
</script>
æè¡çã«ã¯ãhidden 㯠style="display:none" ã¨åãåãã§ãããããããçãæ¸ãã¾ãã
ããã§ã¯è¦ç´ ãããªã³ã¯ãã¦ãã¾ã:
<div id="elem">A blinking element</div>
<script>
setInterval(() => elem.hidden = !elem.hidden, 1000);
</script>
ãã®ä»ã®ããããã£
DOM è¦ç´ ã«ã¯è¿½å ã®ããããã£ãç¹ã«ã¯ã©ã¹ã«ä¾åããããããã£ãããã¾ã:
valueâ<input>,<select>ã<textarea>(HTMLInputElement,HTMLSelectElementâ¦) ã®ããã®å¤ãhrefâ<a href="...">(HTMLAnchorElement) ã®href.idâ ãã¹ã¦ã®è¦ç´ (HTMLElement)ã«å¯¾ãã âidâ 屿§ã®å¤- â¦ãªã©ãã£ã¨â¦
ä¾:
<input type="text" id="elem" value="value">
<script>
alert(elem.type); // "text"
alert(elem.id); // "elem"
alert(elem.value); // value
</script>
ã»ã¨ãã©ã®æ¨æºã® HTML 屿§ã¯å¯¾å¿ãã DOM ããããã£ãæã£ã¦ããããã®ããã«ãã¦ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
æå®ããã¯ã©ã¹ããµãã¼ãããã¦ãããã¹ã¦ã®ããããã£ã®ãªã¹ãã¯ã¹ããã¯ã«ããã¾ããä¾ãã°ãHTMLInputElemen 㯠https://html.spec.whatwg.org/#htmlinputelement ã§ããã¥ã¡ã³ãåããã¦ãã¾ãã
ãããã¯ãéããããç¥ãããå ´åããå
·ä½çãªãã©ã¦ã¶ã§ã®ã¹ããã¯ãç¥ãããå ´åã«ã¯ã-- ãã¤ã§ã console.dir(elem) ã§è¦ç´ ãåºåãããããã£ã確èªãããã¨ãã§ãã¾ãããããã¯ãã©ã¦ã¶éçºè
ãã¼ã«ã® Elements ã¿ãã§ âDOM ããããã£â ãåç
§ãã¦ãã ããã
ãµããª
å DOM ãã¼ãã¯ç¹å®ã®ã¯ã©ã¹ã«å±ãã¾ããã¯ã©ã¹ã¯é層ãå½¢æãã¾ããããããã£ã¨ã¡ã½ããã®å®å ¨ãªã»ããã¯ç¶æ¿ã®çµæã¨ãã¦å¾ããã¾ãã
主㪠DOM ãã¼ãããããã£ã¯æ¬¡ã®éãã§ã:
nodeType- ãã¼ããããã¹ããã¼ããè¦ç´ ãã¼ããã確èªã§ãã¾ããè¦ç´ ã®å ´å
1ã¨ãããã¹ããã¼ãã®å ´å3ããã®ä»ããã¤ã種é¡ãããã¾ããèªã¿åãå°ç¨ã§ãã nodeName/tagName- è¦ç´ ã®å ´åãã¿ã°åã§ã(XMLã¢ã¼ããé¤ã大æå)ãéè¦ç´ ãã¼ãã®å ´åã
nodeNameã¯ãããä½ãã説æãã¾ããèªã¿åãå°ç¨ã§ãã innerHTML- è¦ç´ ã®HTMLã³ã³ãã³ãã夿´å¯è½ã§ãã
outerHTML- è¦ç´ ã®å®å
¨ãªHTMLã§ãã
elem.outerHTMLã¸ã®æ¸ãè¾¼ã¿æä½ã¯elemèªä½ã«ã¯è§¦ãã¾ããã代ããã«ãå¤é¨ã®ã³ã³ããã¹ãã§æ°ããHTMLã§ç½®ãæãã¾ãã nodeValue/data- éè¦ç´ ãã¼ã(ããã¹ããã³ã¡ã³ã)ã®ã³ã³ãã³ãã§ããããã2ã¤ã¯ã»ã¨ãã©åãã§é常ã¯
dataã使ãã¾ãã夿´å¯è½ã§ãã textContent- è¦ç´ ä¸ã®ããã¹ãã§ãåºæ¬çã«ã¯ HTML ãããã¹ã¦ã®
<ã¿ã°>ãé¤ãããã®ã§ããããã«æ¸ãè¾¼ãã¨ãè¦ç´ å ã«ããã¹ããé ç½®ããããã¹ã¦ã®ç¹æ®æåã¨ã¿ã°ãããã¹ãã¨ãã¦æ£ç¢ºã«æ±ããã¾ãã ã¦ã¼ã¶ã¼ã使ããããã¹ããå®å ¨ã«æ¿å ¥ããä¸è¦ãªHTMLã®æ¿å ¥ãé²ããã¨ãã§ãã¾ãã hiddentrueãã»ããããå ´åãCSSã®ãdisplay:noneã¨åãã§ãã
DOM ãã¼ãã¯ã¯ã©ã¹ã«å¿ãã¦ä»ã®ããããã£ãæã£ã¦ãã¾ããä¾ãã° <input> è¦ç´ (HTMLInputElement) 㯠value, type ããµãã¼ããã <a> è¦ç´ (HTMLAnchorElement) 㯠href ãªã©ã§ããã»ã¨ãã©ã®æ¨æºHTML屿§ã¯å¯¾å¿ãã DOM ããããã£ãæã£ã¦ãã¾ãã
ããããHTML屿§ã¨DOMããããã£ã¯å¿ ãããåãã§ã¯ããã¾ãããããã«ã¤ãã¦ã¯æ¬¡ã®ç« ã§èª¬æãã¾ãã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã