Jeremias: Rekursionsprobleme

Beitrag lesen

Viele Dank für die Antwort!
Hab's gleich ausprobiert und nachgeschaut...

function gothrough(curNode){
if(curNode.type == "checkbox"){

müßte zu einem Fehler (und damit Abbruch) führen, wenn das curNode kein type-Attribut bzw. type-Unterobjekt hat.
Erst prüfen, ob curNode.type existiert, dann, welchen Wert es hat.

Dachte jeder Knoten hat das type-Attribut? Kriege auch keine Fehlermeldung, das Skript läuft ohne Abbruch durch.

curNode.checked = "true";
}
if(curNode.firstChild && curNode.style.display != "none"){

Hier prüfst Du, ob die Methode firstChild vorhanden ist, ok, aber Du prüfst NICHT, ob es auch ein erstes Kind gibt (dazu müßte ja ein Aufruf der Methode erfolgen)

Meinst du mit try..catch? Glaube nicht, dass das nötig ist. Hatte woanders eine Schleife:

while(document.getElementsByName(irgendeinname)[i]){
      ...anweisungen...
      i++;
      }

Die lief auch korrekt durch.

gothrough(curNode.firstChild);

Hier übergibst Du die Methode firstChild als Parameter.

Willst Du hier vielleicht das Ergebnis des Aufrufs übergeben?
Ein Aufruf ist durch die (ggf. leere) Parameterliste in Klammern gekennzeichnet.

Zitat Selfhtml: firstChild Speichert das Objekt des ersten Kindknotens eines Knotens.

Sonst müsste ich bei Zugriffen die Klammern ja auch angeben (zB xyz.firstChild().data). Oder hab ich das jetzt falsch verstanden?

Habs zur Sicherheit ausprobiert: mit Klammern tut sich gar nix (- er bringt aber auch keine Fehlermeldung)

if(curNode.nextSibling && curNode.style.display != "none"){
gothrough(curNode.nextSibling);

analog zu firstChild.

Siehe dazu http://selfhtml.teamone.de/javascript/objekte/node.htm#next_sibling - da steht im Beispiel "Knoten = Knoten.nextSibling;", also ohne Klammern (nicht "Knoten = Knoten.nextSibling();").

Hat also leider nicht viel geholfen - trotzdem vielen Dnak für die Antwort.

Gruß, Jeremy