Element: replaceChildren() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2020å¹´10æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
Element.replaceChildren() ã¡ã½ããã¯ã Node ã®æ¢åã®åãã¼ãããæå®ãããæ°ããä¸é£ã®åã§ç½®ãæãã¾ããæååã¾ã㯠Node ãªãã¸ã§ã¯ããæå®ãããã¨ãã§ãã¾ãã
æ§æ
replaceChildren(param1)
replaceChildren(param1, param2)
replaceChildren(param1, param2, /* ⦠,*/ paramN)
弿°
param1, â¦,paramN-
ä¸é£ã®
Nodeãªãã¸ã§ã¯ãã¾ãã¯æååã§ããã®Elementã®æ¢åã®åãç½®ãæãããã®ã§ããç½®ãæãããªãã¸ã§ã¯ããæå®ãããªãã£ãå ´åã¯ãElementã®åãã¼ãã¯ç©ºã«ãªãã¾ãã
è¿å¤
ãªã (undefined)ã
ä¾å¤
HierarchyRequestErrorDOMException-
ãã¼ãããªã¼ã®å¶ç´ã«éåããã¨ãã«çºçãã¾ãã
ä¾
>ãã¼ãã空ã«ãã
replaceChildren() ã¯ããã¼ããããã¹ã¦ã®åãã¼ããåãé¤ãããã®é常ã«ä¾¿å©ãªã¡ã«ããºã ãæä¾ãã¾ãã弿°ãæå®ããã«ã親ãã¼ãã§å¼ã³åºãã¨å®ç¾ã§ãã¾ãã
myNode.replaceChildren();
è¦ç´ éã§ãã¼ããç§»è¡
replaceChildren() ã使ãã°ãåé·ãªã«ã¼ãã³ã¼ãã«é ¼ããã¨ãªããè¦ç´ éã§ç°¡åã«ãã¼ãã転éãããã¨ãã§ãã¾ããä¾ãã°ããã¼ãã£ã¼ã®æçã鏿ããããã®ç°¡åãªã¢ããªã±ã¼ã·ã§ã³ãããã¨ãã¾ãããã® HTML ã¯æ¬¡ã®ãããªãã®ã«ãªãã§ãããã
<h2>ãã¼ãã£ã¼ã®é£ã¹ç©ãªã¹ã</h2>
<main>
<div>
<label for="no">No thanks!</label>
<select id="no" multiple size="10">
<option>ããã</option>
<option>ãªã¬ã³ã¸</option>
<option>ã¶ã©ã</option>
<option>ããã</option>
<option>ãã¦ã¤ãã«ã¼ã</option>
<option>ãã§ã³ã¬ã¼ãã¯ããã¼</option>
<option>ãã¼ãããã¯ããã¼</option>
<option>ãã§ã³ã¬ã¼ããã¼</option>
<option>ãã ãµã³ã</option>
<option>ãã¼ãºãµã³ã</option>
<option>ãã¡ã©ãã§ã«ãµã³ã</option>
<option>ã¢ã¤ã¹ã¯ãªã¼ã </option>
<option>ã¼ãªã¼</option>
<option>人åã¹ãã£ãã¯ã¨ãã ã¹</option>
<option>ãã«ã²ãªã¼ã¿ãã¶</option>
<option>ãºã±ãã¼ã«ã´ã</option>
<option>ãã¼ã¬ã³éèãã¶</option>
</select>
</div>
<div class="buttons">
<button id="to-yes">"Yes" ã¸ç§»å --></button>
<button id="to-no"><-- "No" ã¸ç§»å</button>
</div>
<div>
<label for="yes">Yes please!</label>
<select id="yes" multiple size="10"></select>
</div>
</main>
ç°¡å㪠CSS ã使ã£ã¦ã 2 ã¤ã®é¸æãªã¹ãã並ã¹ããã®éã«ã³ã³ããã¼ã«ãã¿ã³ãé ç½®ããã®ãçã«ããªã£ã¦ããã§ãããã
main {
display: flex;
}
div {
margin-right: 20px;
}
label,
button {
display: block;
}
.buttons {
display: flex;
flex-flow: column;
justify-content: center;
}
select {
width: 200px;
}
ããã§ãããããã¨ã¯ã "yes" ãã¿ã³ãæ¼ãããã¨ãã« "no" ãªã¹ãã§é¸æããã¦ãããªãã·ã§ã³ã "yes" ãªã¹ãã«è»¢éãã "no" ãã¿ã³ãæ¼ãããã¨ãã« "yes" ãªã¹ãã§é¸æããã¦ãããªãã·ã§ã³ã "no" ãªã¹ãã«è»¢éãããã¨ã§ãã
ãã®ã¤ãã³ããã³ãã©ã¼ã¯ã転éããã鏿æ¸ã¿ã®ãªãã·ã§ã³ã 1 ã¤ã®å®æ°ã«ã転éå
ã®ãªã¹ãå
ã®æ¢åã®ãªãã·ã§ã³ãå¥ã®å®æ°ã«ã¾ã¨ãã¾ããããã¦ããªãã·ã§ã³ã転éãããªã¹ãã«å¯¾ã㦠replaceChildren() ãå¼ã³åºããã¹ãã¬ããæ¼ç®åãç¨ãã¦ä¸¡æ¹ã®å®æ°ã«å«ã¾ãããã¹ã¦ã®ãªãã·ã§ã³ã渡ãã¾ãã
const noSelect = document.getElementById("no");
const yesSelect = document.getElementById("yes");
const noBtn = document.getElementById("to-no");
const yesBtn = document.getElementById("to-yes");
yesBtn.addEventListener("click", () => {
const selectedTransferOptions =
document.querySelectorAll("#no option:checked");
const existingYesOptions = document.querySelectorAll("#yes option");
yesSelect.replaceChildren(...selectedTransferOptions, ...existingYesOptions);
});
noBtn.addEventListener("click", () => {
const selectedTransferOptions = document.querySelectorAll(
"#yes option:checked",
);
const existingNoOptions = document.querySelectorAll("#no option");
noSelect.replaceChildren(...selectedTransferOptions, ...existingNoOptions);
});
æçµçãªçµæã¯æ¬¡ã®ããã«ãªãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| DOM > # ref-for-dom-parentnode-replacechildrenâ > |