Element: innerHTML ããããã£
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
Element ãªãã¸ã§ã¯ãã® innerHTML ããããã£ã¯ãè¦ç´ å
ã® HTML ã¾ã㯠XML ã®ãã¼ã¯ã¢ãããåå¾ãããè¨å®ããããã¾ãã
ããæ£ç¢ºã«è¨ãã°ãinnerHTML ã¯è¦ç´ å
ã®å
¥ãåã«ãªã£ãå DOM è¦ç´ ãã·ãªã¢ã©ã¤ãºãããã®ãåå¾ããããè¦ç´ å
ã® DOM ããªã¼ãç½®ãæããããã«è§£éããã HTML ã¾ã㯠XML ãè¨å®ãã¾ãã
è¦ç´ ã®å
容ãç½®ãæããã¨ãããããææ¸ã« HTML ãæ¿å
¥ããã¨ããå ´åã«ã¯ãinsertAdjacentHTML() ã¡ã½ããã使ç¨ãã¦ãã ããã
DOMãããªã¼ãããããã£ããèªã¿è¾¼ãã§ã·ãªã¢ã©ã¤ãºããå ´åãã·ã£ãã¦ã«ã¼ãã¯å«ã¾ãã¾ãããã·ã£ãã¦ã«ã¼ããå«ã HTML æååãåå¾ãããå ´åã¯ã Element.getHTML() ã¾ã㯠ShadowRoot.getHTML() ã¡ã½ããã使ç¨ããå¿
è¦ãããã¾ãã
åæ§ã«ã innerHTML ã使ç¨ãã¦è¦ç´ ã®ã³ã³ãã³ããè¨å®ããå ´åã HTML æååã¯ã·ã£ãã¦ã«ã¼ããå«ã¾ãªã DOM è¦ç´ ã«è§£éããã¾ãã
ã§ããããä¾ãã° <template> ã¯ã shadowrootmode 屿§ãæå®ããã¦ãããã©ããã«ãããããã HTMLTemplateElement ã«è§£éããã¾ãã
宣è¨çãªã·ã£ãã¦ã«ã¼ããå«ã¾ãã HTML æååããè¦ç´ ã®ã³ã³ãã³ããè¨å®ããã«ã¯ã Element.setHTMLUnsafe() ã¾ã㯠ShadowRoot.setHTMLUnsafe() ã使ç¨ããå¿
è¦ãããã¾ãã
å¤
è¦ç´ ã®åå«ã HTML ã«ã·ãªã¢ã©ã¤ãºãããã®ãå«ãã æååã§ãã
innerHTML ã«å¤ãè¨å®ããã¨ãè¦ç´ ã®ãã¹ã¦ã®åå«ãåé¤ãã¦ãhtmlString ã®æååã§ä¸ãããã HTML ãè§£éãã¦æ§ç¯ããããã¼ãã«ç½®ãæãã¾ãã
null å¤ã«è¨å®ããã¨ããã® null å¤ã¯ç©ºæåå ("") ã«å¤æãããããã elt.innerHTML = null 㯠elt.innerHTML = "" ã¨åçã§ãã
ä¾å¤
SyntaxErrorDOMException-
innerHTMLã®å¤ããæ£ãããªã形㮠HTML ã®æååã使ç¨ãã¦è¨å®ãããã¨ããå ´åã«çºçãã¾ãã NoModificationAllowedErrorDOMException-
親ã
Documentã§ãããã¼ãã« HTML ãæ¿å ¥ãããã¨ããå ´åã«çºçãã¾ãã
使ç¨ä¸ã®ã¡ã¢
>è¦ç´ ã® HTML ã³ã³ãã³ãã®èªã¿åã
innerHTML ãèªã¿åãã¨ãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããè¦ç´ ã®åå«ã§æ§æããã HTML ã¾ã㯠XML ã®æçãã·ãªã¢ã©ã¤ãºãã¾ããçµæã¨ãã¦æååãè¿ãã¾ãã
let contents = myElement.innerHTML;
ããã§ã HTML ã®ã³ã³ãã³ãã®ãã¼ãã® HTML ãã¼ã¯ã¢ãããè¦ããã¨ãã§ãã¾ãã
ã¡ã¢: è¿ããã HTML ã¾ã㯠XML ã®æçã¯ãç¾å¨ã®è¦ç´ ã®ä¸èº«ã«åºã¥ãã¦çæããã¾ãã®ã§ãè¿ãããæçã®ãã¼ã¯ã¢ãããæ´å½¢æ¹æ³ã¯ãå ã®ãã¼ã¸ã®ãã¼ã¯ã¢ããã¨åãã§ããã¨ã¯éãã¾ããã
è¦ç´ ã®ä¸èº«ã®ç½®ãæã
innerHTML ã®å¤ãè¨å®ãããã¨ã§ãæ¢åã®è¦ç´ ã®å
å®¹ãæ°ããå
容ã«ç½®ãæãããã¨ãç°¡åã«ã§ãã¾ãã
è¦å: æ¿å ¥ãããæååã«æªæã®ããå 容ãå«ã¾ããå¯è½æ§ãããå ´åãã»ãã¥ãªãã£ä¸ã®ãªã¹ã¯ã«ãªãã¾ãã ã¦ã¼ã¶ã¼ãæä¾ãããã¼ã¿ãæ¿å ¥ããå ´åã¯ãç¡å®³åããã©ã¤ãã©ãªã¼ã使ç¨ããããå¸¸ã«æ¤è¨ãã¦ãã ããããã¡ãã¯æ¿å ¥ããåã«ç¡å®³åãè¡ãã¾ãã
ä¾ãã°ãææ¸ã® body 屿§ã®å
å®¹ãæ¶å»ãããã¨ã§ãææ¸ã®å
容å
¨ä½ãæ¶å»ãããã¨ãã§ãã¾ãã
document.body.textContent = "";
ãã®ä¾ã¯ææ¸ã®ç¾å¨ã® HTML ãã¼ã¯ã¢ãããèµ°æ»ãã "<" ã®æåãæååç
§ã® "<" ã«ç½®ãæããããã«ãã£ã¦æ¬è³ªçã« HTML ãçããã¹ãã«å¤æãã¾ãã
ããã¦ããã <pre> ã§å²ã¿ã¾ããããã¦ã innerHTML ã®å¤ããã®æ°ããæååã«å¤æ´ãã¾ããçµæã¨ãã¦ãææ¸ã®å
容ããã¼ã¸å
¨ä½ã®ã½ã¼ã¹ã³ã¼ãã®è¡¨ç¤ºã«ç½®ãæããã¾ãã
document.documentElement.innerHTML = `<pre>${document.documentElement.innerHTML.replace(
/</g,
"<",
)}</pre>`;
æä½ã®è©³ç´°
innerHTML ã«å¤ãè¨å®ããã¨ãæ£ç¢ºã«ã¯ä½ãèµ·ããã®ã§ããããï¼ãããè¡ãã¨ãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã¯ä»¥ä¸ã®ã¹ãããã追ãã¾ãã
- æå®ãããå¤ã¯ (ææ¸åã«åºã¥ãã¦) HTML ã¾ã㯠XML ã¨ãã¦è§£éãããæ°ããä¸é£ã®è¦ç´ ã® DOM ãã¼ãã表ã
DocumentFragmentãªãã¸ã§ã¯ãã®ä¸ã«çµæãå ¥ãããã¾ãã - ä¸èº«ãç½®ãæãããã¨ãã¦ããè¦ç´ ã
<template>è¦ç´ ã§ããå ´åã¯ã<template>è¦ç´ ã®content屿§ããã¹ããã 1 ã§çæãããæ°ããDocumentFragmentã§ç½®ãæãã¾ãã - ãã®ä»ã®è¦ç´ ã¯ãã¹ã¦ãè¦ç´ ã®å
å®¹ãæ°ãã
DocumentFragmentã®ãã¼ãã§ç½®ãæãã¾ãã
HTML ãè¦ç´ ã«é©ç¨
innerHTML ã«å¤ãè¨å®ããã¨ãæ¢åã®è¦ç´ ã®ä¸ã¤ã«æ°ããå
容ç©ã追å ãã¾ãã
ä¾ãã°ãæ°ãããªã¹ãé
ç® (<li>) ãæ¢åã®ãªã¹ã (<ul>) ã«è¿½å ãããã¨ãã§ãã¾ãã
HTML
<ul id="list">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
</ul>
JavaScript
const list = document.getElementById("list");
list.innerHTML += `<li><a href="#">Item ${list.children.length + 1}</a></li>`;
ãªããinnerHTML ã使ç¨ã㦠HTML è¦ç´ ã追å ããã¨ï¼ä¾ãã° el.innerHTML += "<a href='â¦'>link</a>"ï¼ã以åè¨å®ããã¤ãã³ããªã¹ãã¼ãåãé¤ããã¨ã«ãªãã¾ãã
ã¤ã¾ãããã®æ¹æ³ã§ HTML è¦ç´ ã追å ããã¨ã以åè¨å®ããã¤ãã³ããªã¹ãã¼ã§å¾
ã¡åããããã¨ãã§ããªããªãã¾ãã
ã»ãã¥ãªãã£ã®èæ ®äºé
ã¦ã§ããã¼ã¸ã«ããã¹ããæ¿å
¥ããããã« innerHTML ã使ç¨ãã¦ããä¾ã¯çããããã¾ãããããããµã¤ãä¸ã®æ»æãã¯ãã«ã«ãªãå¯è½æ§ããããæ½å¨çãªã»ãã¥ãªãã£ãªã¹ã¯ãçãã¾ãã
let name = "John";
// 'el' ã HTML ã® DOM è¦ç´ ã¨æ³å®ãã¾ã
el.innerHTML = name; // ãã®å ´åã¯ç¡å®³
// â¦
name = "<script>alert('I am John in an annoying alert!')</script>";
el.innerHTML = name; // ãã®å ´åã¯ç¡å®³
ããã¯ã¯ãã¹ãµã¤ãã¹ã¯ãªããã£ã³ã°æ»æã®ããã«è¦ãã¾ãããçµæçã«ã¯ç¡å®³ã§ãã HTML5 ã§ã¯ innerHTML ã§æ¿å
¥ããã <script> ã¿ã°ã¯å®è¡ããã¹ãã§ã¯ãªãã¨å®ç¾©ãã¦ããããã§ãã
ããããæ¬¡ã®ããã« <script> ã使ããã« JavaScript ãå®è¡ããæ¹æ³ãããã®ã§ãå¶å¾¡ãããã¨ãã§ããªãæååãè¨å®ããããã« innerHTML ã使ç¨ãããã³ã«ãã»ãã¥ãªãã£ãªã¹ã¯ã¯æ®ãã¾ãã
const name = "<img src='x' onerror='alert(1)'>";
el.innerHTML = name; // ã¢ã©ã¼ãã表示ããã
ãã®ããã innerHTML ã使ç¨ãã代ããã«æ¬¡ã®ããã«ãã¦ãã ããã
- ãã¬ã¼ã³ããã¹ããæ¿å
¥ããéã«ã¯ã代ããã«
Node.textContentã使ç¨ãããããã¯æ¸¡ãããã³ã³ãã³ãã HTML ã¨ãã¦è§£éããã®ã§ã¯ãªããçã®ããã¹ãã¨ãã¦æ¿å ¥ãã¾ãã
è¦å:
ããã¸ã§ã¯ãã«å¯¾ãã¦ä½ããã®å½¢ã®ã»ãã¥ãªãã£ã¬ãã¥ã¼ãè¡ãããå ´åã innerHTML ã¯å¤ãã®å ´åã§ãã³ã¼ããæçµ¶ãããçµæã«ãªãã¾ãã
ä¾ãã°ããã©ã¦ã¶ã¼æ¡å¼µæ©è½ã®ä¸ã§ innerHTML ã使ç¨ããå ´åãæ¡å¼µæ©è½ã addons.mozilla.org ã«æåºããã¨ãèªåã¬ãã¥ã¼ããã»ã¹ãééã§ããªãã§ãããã
ä»£æ¿æ¹æ³ã«ã¤ãã¦ã¯ããã¼ã¸ã¸å¤é¨ã³ã³ãã³ããå®å
¨ã«æ¿å
¥ãããåç
§ãã¦ãã ããã
ä¾
ãã®ä¾ã¯ innerHTML ã使ç¨ãã¦ãã¦ã§ããã¼ã¸ä¸ã®ããã¯ã¹å
ã«ã¡ãã»ã¼ã¸ãè¨é²ããã¡ã«ããºã ã使ãã¾ãã
JavaScript
function log(msg) {
const logElem = document.querySelector(".log");
const time = new Date();
const timeStr = time.toLocaleTimeString();
logElem.innerHTML += `${timeStr}: ${msg}<br/>`;
}
log("Logging mouse events inside this containerâ¦");
log() 颿°ã¯ Date ãªãã¸ã§ã¯ããã toLocaleTimeString() ã使ç¨ãã¦ç¾å¨æå»ãåå¾ããã¿ã¤ã ã¹ã¿ã³ãã¨ã¡ãã»ã¼ã¸ããã¹ãããæãæååãæ§ç¯ãã¦ãã°åºåãçæãã¾ãããããã "log" ã¯ã©ã¹ã®ããã¯ã¹ã«ã¡ãã»ã¼ã¸ã追å ãã¾ãã
MouseEvent ãã¼ã¹ã®ã¤ãã³ã (mousedown, click, mouseenter ãªã©) ã«ã¤ãã¦ã®æ
å ±ãè¨é²ãã第äºã®ã¡ã½ããã追å ãã¾ãã
function logEvent(event) {
const msg = `Event <strong>${event.type}</strong> at <em>${event.clientX}, ${event.clientY}</em>`;
log(msg);
}
ãããããããããã°ãåããããã¯ã¹ã®æ§ã ãªãã¦ã¹ã¤ãã³ãã®ã¤ãã³ããã³ãã©ã¼ã¨ãã¦ç»é²ãã¾ãã
const boxElem = document.querySelector(".box");
boxElem.addEventListener("mousedown", logEvent);
boxElem.addEventListener("mouseup", logEvent);
boxElem.addEventListener("click", logEvent);
boxElem.addEventListener("mouseenter", logEvent);
boxElem.addEventListener("mouseleave", logEvent);
HTML
ãã®ä¾ã® HTML ã¯ã¨ã¦ãåç´ã§ãã
<div class="box">
<div><strong>Log:</strong></div>
<div class="log"></div>
</div>
"box" ã¯ã©ã¹ãä»ãã <div> ã¯ãåãªãã¬ã¤ã¢ã¦ãç¨éã®ã³ã³ããã¼ã§ãããå
容ã¨ãã®å¨ãã®ããã¯ã¹ã表ãã¾ãã
ã¯ã©ã¹ã "log" ã§ãã <div> ã¯ããã°ããã¹ãèªèº«ã®ã³ã³ããã¼ã§ãã
CSS
以ä¸ã® CSS ãä¾ã®å 容ãã¹ã¿ã¤ã«ä»ããã¾ãã
.box {
width: 600px;
height: 300px;
border: 1px solid black;
padding: 2px 4px;
overflow-y: scroll;
overflow-x: auto;
}
.log {
margin-top: 8px;
font-family: monospace;
}
çµæ
çµæã®å 容ã¯ãã®ããã«è¦ãã¾ãã ãã¦ã¹ãç§»åãã¦ããã¯ã¹ãåºå ¥ããããããä¸ã§ã¯ãªãã¯ãããããã¨ããã°ãåºåãããã®ãè¦ããã¨ãã§ãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| HTML > # dom-element-innerhtml > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Node.textContentããã³HTMLElement.innerTextElement.insertAdjacentHTML()Element.outerHTML- HTML ã¾ã㯠XML ãè§£éã㦠DOM ããªã¼ã¸:
DOMParser - DOM ããªã¼ã XML æååã¸ã·ãªã¢ã©ã¤ãº:
XMLSerializer Element.getHTML()ShadowRoot.getHTML()Element.setHTMLUnsafe()ShadowRoot.setHTMLUnsafe()