chrisi1002: pop-up menü

ich habe ein pop-up menü in meine seite eingebunden...
mit onmouseover öffne ich das menü
doch wenn ich es mit onmouseout wieder schließe kann ich ja nie ins menü kommen.
und zwischen den verschieden buttons sind leerzeilen, damit kann ich auch keinen div bereich oder ähnliches aufziehen....

<a href="geschichte.htm" target="mainFrame" onFocus="if(document.all) this.blur()">Geschichte</a>
<br>
<a href="#" onmouseover="parent.mainFrame.zeige1()" onFocus="if(document.all) this.blur()">Mitglieder</a>
<br>
<a href="terminplan" target="mainFrame" onFocus="if(document.all) this.blur()">Terminplan</a>
<br>

danke om voraus

  1. Hallo chrisi1002,

    hatten wir das nicht vor kurzem schon einmal?

    Gruß

    Kurt

    --
    "Wer der Meinung ist, dass er fuer Geld alles haben kann, geraet leicht in den Verdacht, dass er fuer Geld alles zu tun bereit ist."  (Benjamin Franklin; am. Politiker; 1706-1790)
    http://elektro-dunzinger.at
    http://shop.elektro-dunzinger.at
    1. hatten wir das nicht vor kurzem schon einmal?

      ja, aber ich habe das nicht verstanden was du gemeint hast...
      gibts da nicht eine einfachere lösung?

      1. Hallo chrisi1002,

        hatten wir das nicht vor kurzem schon einmal?

        ja, aber ich habe das nicht verstanden was du gemeint hast...

        Hast du dir die Lösung angeschaut?
        Was verstehst du denn nicht daran?
        Werde bitte ein wenig konkreter.

        gibts da nicht eine einfachere lösung?

        Viele Wege führen nach Rom, kommt darauf an, was du wirklich willst.
        Lies die Mausposition aus und reagiere darauf.
        Imho halte ich die Lösung, die ich dir angeboten habe, für die einfachere, was aber nicht heisst, dass dem wirklich so ist.
        Wenn du deine Frage konkretisierst, wird dir sicher der eine oder andere Crack weiterhelfen können.

        Gruß

        Kurt

        --
        "Unter Intuition versteht man die Faehigkeit gewisser Leute, eine Lage in Sekundenschnelle falsch zu beurteilen."  (Friedrich Duerrenmatt; schweiz. Schriftsteller; 1921-1990)
        http://elektro-dunzinger.at
        http://shop.elektro-dunzinger.at
        1. ich kenn mich in js nicht so gut aus

          <div id="divMenu1" onMouseOver="change('li2','item1h');window.clearTimeout(timer);show_it('divMenu1');" onMouseOut="change('li2','item1');timer=window.setTimeout('hide_it('divMenu1')',50);">

          mit onouseover="change...." veränderst du nur die farbe des frames, oder?

          das mit dem timer check ich nicht...

          1. 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
            1. danke für deine antwort!
              toll erklärt! jetzt kenn ich mich aus.

              werde es gleich ausprobieren...

              1. jetzt habe ich nur ein problem:

                ich benütze in  meiner seite 3 frames und dadurch muss ich ja praktisch im mainframe die div tags erzeugen und dann irgendwie darauf zugreifen...