Auszeit in Javascript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Auszeit in Javascript

    Hallo zusammen,

    Ich habe mir aus dem Internet ein auf Javascript basierendes Menü heruntergeladen. (http://dosimple.ch/articles/Menus-dy...orizontal.html)

    Dieses funktioniert auch einwandfrei, nur hätte ich gern, dass nicht nur das Schließen vom Menü ein wenig zeitverzögert geschieht sondern auch das Öffnen.

    Also wenn man mit der Maus über einen Menüpunkt mit Untermenü fährt, sollte es eine bestimmte Zeit dauern, bis etwas passiert.

    Ich kann kaum javascript, habe aber die folgende Funktion gefunden: window.setTimeout(...).

    Wie ich die aber jetzt gescheit einbaue, weiß ich nicht, da sie als Parameter ja wieder eine Funktion benötigt usw.

    Die Funktion, die die Untermenüs anzeigt, ist folgende:
    Code:
    function show() {
    	this.getElementsByTagName('ul')[0].style['visibility'] = 'visible';
        // clear the timeout
        eval ( "clearTimeout( timeout"+ this.id +");" );
        hideAllOthersUls( this );
    }
    Am tollsten wäre jetzt natürlich eine Funktion sleep() oder so ähnlich, die ich einfach oben einbaue. Gibt es aber meines WIssens nicht.

    Kann mir da jemand helfen?

    Grüße, Oli

  • #2

    http://de.selfhtml.org/javascript/ob...tm#set_timeout

    Kommentar


    • #3
      Ich kann kaum javascript, habe aber die folgende Funktion gefunden: window.setTimeout(...).

      Wie ich die aber jetzt gescheit einbaue, weiß ich nicht, da sie als Parameter ja wieder eine Funktion benötigt usw.

      Kommentar


      • #4

        oder
        selfHTML

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          ich hab das gelesen, weiß aber wie gesagt nicht, wie ich es konkret auf mein beispiel anwenden soll. Ich hab da schon ne menge probiert...

          Kommentar


          • #6
            Verflixt noch mal, ist das denn so schwer, in so einer Situation mal das "Problem" vernünftig zu analysieren ...?


            Was hast du?
            - du hast Elemente mit Eventhandlern ausgestattet, die eine Funktion aufrufen, die irgendwas macht.

            Was willst du?
            - du willst aus dem Eventhandler heraus zunächst eine (neue) Funktion aufrufen, die dann mit setTimeout ihrerseits zeitverzögert die "alte" Funktion aufruft.


            Also, fang an, das umzusetzen.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Danke wahsaga, so wär es wirklich sinnvoller gewesen, mein Problem darzustellen.

              Dummerweise habe ich mir das auch gedacht und dies schon in mehreren Varianten ausprobiert... nichts hat geklappt.

              Weder addAnEvent(lis.item(i),'focus',window.setTimeout('show()',xx));
              noch das aufrufen von meinetwegen der Funktion "showTimeout", in welcher ich dann mit setTimeout "show()" aufrufe, funktioniert.

              Das ist ja grad das Rätselhafte, und ich habe wirklich schon eine Menge herumprobiert... :-(

              Grüße, Oli

              Kommentar


              • #8
                Ich habe es noch immer nicht hinbekommen... folgender Code:

                Code:
                // show the first ul element found under this elemen
                function show() {
                	var element = this.getElementsByTagName('ul')[0];
                	window.setTimeout('show2("' + element + '")', timeout);
                }
                
                function show2(ele) {
                	ele.style['visibility'] = 'visible';
                }
                So sieht es aus. Lasse ich das window.setTimeout weg, funktioniert es wunderbar, nur eben ohne Timeout. Also wo liegt da der Hund ?
                Vermutlich ist es der Parameter, der Probleme macht. Aber ich habe wirklich keine Ahnung was ich noch versuchen soll...

                Grüße, Oli

                Kommentar


                • #9
                  Original geschrieben von OliOli
                  Vermutlich ist es der Parameter, der Probleme macht.
                  Ja, weil sich eine Objektreferenz nicht sinnvoll in einen String casten lässt.

                  Übergebe der Funktion show2 die Element-ID, und ermittle dann innerhalb dieser die Elementreferenz.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    ich fürchte ich kenn mich zu wenig mit Javascript aus, um das zu verstehen.

                    Wenn du die id im Quelltext meinst, also id="...", dann geht das leider nicht, da für das Element keine id definiert ist...

                    Ich finde ansonsten auch keine Funktion à la "getIdByXxx", die mir vielleicht weiterhilft...

                    Dennoch schonmal Danke!

                    Gruß, Oli

                    Kommentar


                    • #11
                      Ich habs gelöst.

                      window.setTimeout(function() { show2(element) }, timeout);

                      Mit dem Aufruf läuft es.

                      Danke für die Hilfe!

                      Kommentar

                      Lädt...
                      X