返回课程

清除元素

重要性:5

创建一个函数 clear(elem),它可以从元素中删除所有内容。

<ol id="elem">
  <li>Hello</li>
  <li>World</li>
</ol>

<script>
  function clear(elem) { /* your code */ }

  clear(elem); // clears the list
</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 = '';
}