waldemar: endlosschleife in tree

Beitrag lesen

Hallo,

Ich habe ein skript geschrieben, welches eine einfache Baumstruktur beschreibt. Da ich HTMLelemente mit Baumelementen verknüpfen möchte, dachte ich mir, ich gebe den Baumelementen zusätzlich eine id, die dann auch die HTMLelemente halten können und nach der ich den Baum einfach durchsuchen kann. Dazu benutze ich die Methode get(id).. nur läuft die Methode aus mir nicht ersichtlichen Gründen in eine Endlosschleife und mein Browser bietet mir freundlicherweise noch an, das Skript zu beenden. Kann mir jemand helfen? Hier die Seite:

<html><head><title>tree</title>
<script language="javascript">
function treeNode( name, id ) {
  this.id = id;
  this.name = name;
  this.depth = 0;
  this.expanded = false;
  this.children = Array();
  this.size = function() {
    return this.children.length;
  }
  this.add = function( treenode ) {
    treenode.depth = this.depth + 1;
    this.children[ this.size() ] = treenode;
  }
  this.get = function( id ) {
    r = null;
    if( this.id == id ) {
      r = this;
    } else {
      for( i=0; (i<this.children.length && r==null); i++ ) {
        r = this.childAt(i).get(id);
      }
    }
    return r;
  }
  this.childAt = function( i ) {
    if( i<this.size() ) {
      return this.children[i];
    } else {
      return null;
    }
  }
}

function treetest() {

root = new treeNode( "root", 0 );
  root.add( new treeNode( "eins", 1 ));
  root.add( new treeNode( "zwei", 2 ));
  root.get( 2 ).add( new treeNode( "einsSub1", 3 ));
  root.get( 2 ).add( new treeNode( "einsSub2", 4 ));
  root.get( 4 ).add( new treeNode( "einsSub1Sub1", 5 ));
  root.add( new treeNode( "drei", 6 ));
  root.add( new treeNode( "vier", 7 ));

alert( root.get( 5 ).name );  // funktioniert
  alert( root.get( 6 ).name );  // endlosschleife
}
</script>
</head>
<body onload="treetest()">
</body></html>