Hallo chrisi1002,
Dazu gehört auch der zugehörige Listenpunkt im Hauptmenü, der diesem Div zugeordnet ist. Du kannst nicht mittendrin anfangen und denken, dass es dann klappt:
<li class='item1' id='li2' <---eindeutiger Identifizierer(id)
onMouseOver="change(this.id,'item1h'); <---Mit diesem Aufruf wir "this.id" (li2) angewiesen, die Klasse zu wechseln, in welcher die Schriftfarbe und die Hintergrundfarbe definiert ist. Daher rührt der Farbwechseleffekt, wenn du über die Zelle fährst.
clean(2,3,5); <---Diesen Funktionsaufruf vergiss besser vorläufig, der würde dich an dieser Stelle nur verwirren. Erklärung kommt am Schluss.
window.clearTimeout(timer); <-- Damit wird der Timer abgebrochen, der für das Verbergen des Menüs definiert wurde.
show_it('divMenu1');" <---Hiermit wird nun das Div(divMenu1) aufgerufen, mit dem du vorher gearbeitet hast. Die Funktion verändert die visibility von hidden auf visible. Somit wird das Div sichtbar.
onMouseOut="change(this.id,'item1'); <---Hiermit wird die Hintergrundfarbe und Schriftfarbe des Elementes mit der id(li2) wieder in den Ursprungszustand zurückversetzt.
timer=window.setTimeout('hide_it('divMenu1')',100);"> <--- Und da wird es interessant: Hier wird der Timer initialisiert, welcher nach Ablauf von 100 Millisekunden die Funktion hide_it aufruft, um das Menü(divMenu1) wieder zu verbergen. Dies deshalb, weil du ein wenig Zeit brauchst, um von "li2" auf "divMenu1" zu wechseln. Merke dir diesen Punkt, bei dem geht es dann in der zweiten Staffel weiter.
ALLGEMEIN <span class='bold'>»</span></li>" <---Das ist nun nur mehr der eingefügte Text.
---------------------------------------------- Staffel 2 ------------------------------------------------
<div id="divMenu1" <---eindeutige Identifizierung des Div's, welches vorher in dem Punkt "ALLGEMEIN" angesprochen wurde.
onMouseOver="change('li2','item1h'); <---Hiermit wird nun "li2" manipuliert, um diesen Auswahlpunkt in der aktiven Farbe zu erhalten.
window.clearTimeout(timer);show_it('divMenu1');" <--Hier wird der Timer, den du vorher initialisiert hast, wieder abgebrochen, um ein Verbergen des Menüs zu verhindern und die Funktion "show_it()" aufgerufen, die das Div anzeigt.
onMouseOut="change('li2','item1'); <-- Hier wird wieder der Ursprungszustand des Ausgangspunktes hergestellt.
timer=window.setTimeout('hide_it('divMenu1')',50);"> <---Hier wird erneut der Timer in Gang gesetzt, der die Funktion zum Verbergen des Menüs nach 50 Millisekunden anspricht.
Der Timer hat hier eigentlich nur die Funktion, hide_it() solange zu verzögern, damit im Falle des Falles noch abgebrochen und show_it() aufgerufen werden kann. Wenn dieser Aufruf nicht erfolgt, schliesst sich das Div nach eingestellter Zeit wieder.
Ein weiterer Grund für den Einsatz der Timer ist das Eventbubbling, das zu einem Flackern des Menüs führen würde, aber das würde hier zu weit führen. Wenn es dich interessiert: http://selfhtml.teamone.de/dhtml/modelle/microsoft.htm#event_bubbling
Und nun zur Funktion clean(): Diese hat eigentlich nur einen Zweck. Wenn du rasch über die Menüpunkte fährst würden sich alle Divs sofort öffnen und erst nach eingestellter Zeit wieder schliessen. Das ergäbe dann eine klassische div-soap, oder so... ;-) Damit dies nicht geschehen kann und immer nur ein Layer sichtbar sein kann, wird bei jedem onMouseover im Hauptmenü die Funktion clean() aufgerufen, welche in allen anderen Listenpunkten die Timer umgeht und die Div's augenblicklich schliesst.
mit onouseover="change...." veränderst du nur die farbe des frames, oder?
Welche Frames meinst du? Sprichst du von den Listenpunkten? Wenn ja, dann stimmt deine Annahme. :-)
das mit dem timer check ich nicht...
Ich hoffe, jetzt doch... ;-)
Gruß
Kurt
PS.: Hoi, das muss ich mir kopieren, das kann ich ja direkt als Grundlage für die Dokumentation des Menüs hernehmen.... :-)
"Man sieht nur mit dem Herzen gut. Das Wesentliche ist fuer die Augen unsichtbar." (Antoine de Saint-Exupéry; fr. Schriftsteller u. Kampfflieger; 1900-1944)
http://elektro-dunzinger.at
http://shop.elektro-dunzinger.at