2017-09-27 4 views
1

Ich bin ein Anfänger bei Javascript. Ich möchte Sie Javascript verwenden, um alle Elemente in der dom zu durchsuchen und ihren Namen drucken, schrieb ich folgendes:Programm Rekursion in Javascript

function getNumber(parent){ 
       var entiredoc = parent; 
       var docnodes = entiredoc.childNodes; 
       return docnodes.length; 
      } 
function browAllDom(parent){ 
     if(parent!=null){ 
      for(i = 0; i < getNumber(parent); i++){ 
        alert(parent.nodeName); 
        return browAllDom(parent.childNodes[i]); 
      } 
     } 
} 

wenn ich debuggen, es blättert das Blatt im Baum dom und Ausfahrten. Ich denke, es muss alles in der for-Schleife durchsuchen.

Wo ist das Problem? Und wie kann ich es reparieren?

+1

'return browAllDom (parent.childNodes [i]);' ... bedeutet, dass die Schleife höchstens einmal ausgeführt wird ... return returns aus der umschließenden Funktion –

+1

Ein einfacher Weg wäre 'parent.getElementsByTagName zu verwenden ('*') ', die ein abgeflachtes Objekt aller Elemente in 'Eltern' zurückgibt. – Teemu

Antwort

1

Der folgende Code wird nur ein einziges Mal ausgeführt wird:

for(i = 0; i < getNumber(parent); i++){ 
    (parent.nodeName); 
    return browAllDom(parent.childNodes[i]); 
} 

Dieser Code wird nur einmal ausgeführt, da Sie von der for-Schleife zurückkehren.

Stattdessen sollten Sie die Rückkehr außerhalb der for-Schleife schreiben.

Werfen Sie einen Blick auf diese answer. Sie werden ein besseres Verständnis haben.