retour au cours

Effacer l'élément

importance: 5

Créez une fonction clear(elem) qui supprime tout de l’élément.

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

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

  clear(elem); // efface la liste
</script>

Voyons d’abord comment ne pas le faire :

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

Cela ne fonctionnera pas, car l’appel à remove() décale la collection elem.childNodes, donc les éléments commencent à partir de l’index 0 à chaque fois. Mais i augmente et certains éléments seront ignorés.

La boucle for..of fait de même.

La bonne variante pourrait être :

function clear(elem) {
  while (elem.firstChild) {
    elem.firstChild.remove();
  }
}

Et il existe également un moyen plus simple de faire de même :

function clear(elem) {
  elem.innerHTML = '';
}