Comment utiliser getElementsByTagName() pour trouver tous les éléments imbriqués?

J'ai le code HTML suivant:

<html>
  <head><title>Title</title></head>
  <body>
    <div id='div2'>
      <a href='#'>1</a>
      <div id='div1'>
        <a href='#'>2</a>
      </div> 
    </div>

  </body>
</html>

... et le code Javascript suivant, je suis en cours d'exécution à travers Greasemonkey:

var nodes = document.body.getElementsByTagName('a');
for (var i = 0; i < nodes.length; i++) {
  var node = nodes[i];
  node.parentNode.removeChild(node);    
}

Je m'attends à trouver et supprimer tous les tags; au lieu de cela, il trouve le premier, mais pas le second. Aussi loin que je peux dire c'est avoir de la difficulté avec la façon dont le deuxième est Une balise imbriquée.

Quelqu'un pourrait s'il vous plaît laissez-moi savoir comment faire pour supprimer toutes les balises, à l'aide de getElementsByTagName? Il y a des raisons, je préfère ne pas utiliser XPath si possible.

Il va probablement exiger la récursivité.
La documentation que j'ai lu dit: "La méthode getElementsByTagName recherches de manière récursive à travers tous les nœuds descendants du nœud actuel de la recherche pour les éléments de nœuds avec le nom spécifié." Donc, je m'attendais à faire la récursivité pour moi, ce qui m'amène à penser que je suis en train de faire une simple erreur.

OriginalL'auteur Duncan Bayne | 2010-09-24