zpět k lekci

Vyčistěte element

důležitost: 5

Vytvořte funkci vyčisti(elem), která z elementu odstraní všechen obsah.

<ol id="elem">
  <li>Ahoj</li>
  <li>světe</li>
</ol>

<script>
  function vyčisti(elem) { /* váš kód */ }

  vyčisti(elem); // vyčistí seznam
</script>

Nejprve se podíváme, jak to nedělat:

function vyčisti(elem) {
  for (let i=0; i < elem.childNodes.length; i++) {
      elem.childNodes[i].remove();
  }
}

To nebude fungovat, protože volání remove() posune prvky v kolekci elem.childNodes, takže elementy budou pokaždé začínat od indexu 0. Avšak i se zvýší a některé elementy tedy budou přeskočeny.

Cyklus for..of dělá totéž.

Správná varianta může být:

function vyčisti(elem) {
  while (elem.firstChild) {
    elem.firstChild.remove();
  }
}

A existuje i jednodušší způsob, jak udělat totéž:

function vyčisti(elem) {
  elem.innerHTML = '';
}