Frage zu Javascript-Tutorial "TreeMenu"

Nö, das ist dort nicht vorgesehen...das Skript ist schon etwas älter, aus einer Zeit, wo es mit AJAX erst langsam losging....ausserdem stand ich unter Zeitdruck, weil es ein Contestbeitrag war :-)

Wenn du versuchen solltest, es zu implementieren, wäre folgende Vorgehensweise denkbar:
Speichere vor der Manipulation des Menues eine Kopie des Ganzen in einer Variable zwischen(die Kopie erstelle per cloneNode() ).

Wenn du jetzt etwas per AJAX hinzufügen willst, füge es dieser Kopie hinzu. Wenn du fertig bist, ersetze das Menu durch die veränderte Kopie und rufe die Funktion init_menu() auf.
 
Hallo,

ich glaube ich brauche Hilfe, irgendwie bekomm ich es nicht hin, das ganze richtig in die angesprochene Variable zu speichern.

Danke und Gruß
Roman
 
Moin Roman,

Welche angesprochene Variable?

falls du die Kopie der Liste vor der Manipulation meinst, füge in der Funktion init_menu() vor dieser Zeile:
Code:
objMenu.innerHTML = strip_spaces(objMenu.innerHTML);

...
jenes ein:
Code:
objBuffer=objMenu.cloneNode(true);

Du hast dann eine globale Variable objBuffer verfügbar, deren Inhalt die komplette Kopie des Menues vor der Manipulation ist...also so, wie du es im HTML-Code deiner Seite zu Stehen hast.
 
Hi,
danke, insgesamt scheint es zu tun, nur ein kleines Problem hab ich noch, wie schaffe ich es, den Baum so aufgeklappt zu lassen, wie er bisher war + das Nachgeladene. Wenn ich die Variable manipuliere wird diese ja über das init_menu() komplett neu eingelesen.

Gruß
Roman
 
Moin,

das Öffnen erledigt dort die Funktion expand(wird auch im Tutorial am Ende speziell erwähnt).

Dein Skript müsste sich merken, welche UL-Elemente im Menu alle die display-Eigenschaft "inline" besitzen.

Für jedes dieser offenen <UL> müsstest du die expand()-Methode aufrufen, und ihr den Elternknoten des <ul> (also das übergeordnete <li>) als Parameter übergeben.

Mal auf die Demo auf http://doktormolle.de/treemenu/index.php angewendet würde bspw.

Code:
expand(document.getElementsByTagName('LI')[3]);
expand(document.getElementsByTagName('LI')[4]);
...zuerst "Intern" und dann "Tutorials" öffnen.
 

Neue Beiträge

Zurück