要素をクリアする
重要性: 5
要素からすべてを削除する関数 clear(elem)
を作成してください。
<ol id="elem">
<li>Hello</li>
<li>World</li>
</ol>
<script>
function clear(elem) { /* your code */ }
clear(elem); // リストをクリアします
</script>
まず、それを しない 方法を見てみましょう:
function clear(elem) {
for (let i=0; i < elem.childNodes.length; i++) {
elem.childNodes[i].remove();
}
}
これは動作しません。なぜなら、remove()
の呼び出しは集合 elem.childNodes
をシフトするからです。なので、要素は毎回インデックス 0
から開始します。しかし、 i
は増加するので、いくつかの要素はスキップされるでしょう。
for..of
ループも同じです。
正しいバリアントは次のようになります:
function clear(elem) {
while (elem.firstChild) {
elem.firstChild.remove();
}
}
また、よりシンプルな方法として次のように書くこともできます:
function clear(elem) {
elem.innerHTML = '';
}