Siechfred: Logikproblem mit JavaScript

Beitrag lesen

Wenn du Lust hast würde es mich freuen wenn du das ein bischen näher ausführen könntest.

Ich kopiere das nochmal rein:

var menutree = { menu1 : { hasChildren : true,  
                           children    : ['child1', 'child2', 'child3'] },  
                 menu2 : { hasChildren : false }  
               };

Im Objekt 'menutree' ist deine Menüstruktur gespeichert, für jeden Punkt der obersten Ebene gibt es einen Eintrag (menu1, menu2). Die Eigenschaft 'hasChildren' sagt aus, ob der Menüeintrag Untermenüs hat, falls ja, findet man die Namen der Untermenüs als Array in der Eigenschaft 'children'. Die von mir verwendete Schreibweise nennt man Object-Literal, siehe hierzu auch die Ausführungen zu JSON. Das Objekt kannst du natürlich noch beliebig erweitern, Anhaltspunkte dafür findest du in den o.g. Quellen. Selbstverständlich kannst du die Einträge manipulieren, z.B. könntest du den Kindern eine Eigenschaft 'isOpen' verpassen, die du beim Auf- und Zuklappen ptüfen oder ändern kannst.

for ( var menu in menutree ) {  
  if(menutree[menu].hasChildren)  
    alert(menu + ' has children ' + menutree[menu].children);  
  else  
    alert(menu + ' has no children');  
}

Diese for..in-Schleife geht das Objekt 'menutree' Eintrag für Eintrag durch, indem sie sich in 'menu' die einzelnen Einträge der ersten Ebene holt, deren Eigenschaft 'hasChildren' prüft und im Erfolgsfall die Namen der Kinder ausgibt. Im Misserfolgsfall kommt die Meldung, dass der aktuelle Eintrag keine Kinder hat.

Einen ähnlichen Ansatz findest du übrigens in diesem Feature-Artikel:
http://aktuell.de.selfhtml.org/artikel/dhtml/treemenu/

Siechfred

--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.