Dodwin: sliding div-menu, aber das ganze auf den kopf gedreht

Beitrag lesen

Hallo Christopher,

Ich habe zwar ne ganze Weile hin und her versucht, aber javascript ist eben nicht mein wirkliches Ding.

Da frage ich mich natürlich, was du denn versucht hast...

Eine Erläuterung deines Codes:

An dieser Stelle in initShowHideDivs() wird das "answer"-Div gesucht:

var answer = divs[no].nextSibling;  
while(answer && answer.tagName!='DIV'){  
	answer = answer.nextSibling;  
}

divs[no] ist der "question"-Container [weiter oben: if(divs[no].className=='dhtmlgoodies_question')].
Nun wird der nächte Knoten ausgwählt (http://de.selfhtml.org/javascript/objekte/node.htm#next_sibling@title=nextSibling).
Dieser düfte aber noch nicht der Richtige sein, da noch Text zwischen den 2 divs steht (ein Zeilenumbruch). Das wird als einzelner Knoten betrachtet.
Dafür gibt es dann die while-Funktion die checkt ob es sich bei dem aktuellen Knoten um einen div-Container handelt. Ist dem nicht so, wird der nächste Knoten ausgewählt. Diese Schleife wird also einmal durchlaufen in deinem Beispiel.

Um den Code zu ändern musst du also Folgendes machen:

Zuerst mal natürlich <div class="dhtmlgoodies_answer">...</div> über <div class="dhtmlgoodies_question">...</div> stellen.

Sieht dann so aus (und das 3 mal):

<div class="dhtmlgoodies_answer">...</div>  
<div class="dhtmlgoodies_question">...</div>

Anschließend in der Funktion initShowHideDivs() die Vorkommen von answer.nextSibling durch answer.http://de.selfhtml.org/javascript/objekte/node.htm#previous_sibling@title=previousSibling ersetzen.

Alternativ kannst du auch einfach die while-Schleife rausnehmen und direkt
var answer = divs[no].previousSibling.previousSibling;
schreiben. Dann ist aber auch wichtig, dass Text zwischen den divs steht.

Gruß,
Dodwin

--
Dodwin