Camping_RIDER: Individuelle Scroll-Leiste oder designverträgliche Alternative?

Beitrag lesen

Aloha ;)

function ScrollDown (step) {

window.document.getElementById("menuContainer").scrollTop += step;}

document.getElementById("menuButtonDown").addEventListener("mousedown", function (){
scrolling = false;
if (scrolling) window.clearInterval(scrolling);
scrolling = window.setInterval(function(){ScrollDown(5);},250);});

  
Hm, so kanns ja (wie du selbst schon festgestellt hast) nicht funktionieren. Bedenke: Die Abbruchbedingung für's scrollen (window.clearInterval) wird hier nie erreicht. Schließlich setzt du vorher die Variable scrolling, in der du eigentlich das Handle gespeichert hattest, auf false. `if (scrolling)`{:.language-javascript} ist also nie erfüllt.  
  
Du musst - wie in meinem ursprünglich gegebenen Beispiel - die Zeilen vertauschen. Also zuerst if ... und dann scrolling = false;  
  
Das betrifft auch mouseup und mouseout  
  

> Der Effekt dabei ist jetzt, dass wenn ich den Button ("menuButtonDown") einmal kurz anclicke, dann scrollt das Menü ("menuContainer") tatsächlich nach unten, d.h. es 'hüpft' im viertelsekunden Rhytmus nach unten ;-)  
  
Sehr schön ;) Wenn alles läuft und du ne richtig smoothe Animation willst, kannst du ja den Step heruntersetzen und die Intervall-Zeit auch. Du solltest aber darauf achten, die Intervall-Zeit nicht allzu klein zu machen (merkst du dann schon). Im 1ms-Bereich z.B. ist es etwas witzlos, da kommt der Browser nicht mit der Darstellung hinterher. Von nicht so rechenstarken Geräten mal ganz zu schweigen ;) aber so auf 100ms oder vllt. sogar 50ms kannst du's wahrscheinlich schon drücken ;)  
  

> Ob ich es dabei so schreibe wie ichs hier gepostet habe, oder ob ich deine Schreibweise mit .onmouseup usw. aus dem ersten Post übernehme, macht dabei leider keinen Unterschied. (Außer den, dass mir im Browser "scrolling is not defined" angezeigt wird, wenn ich die Zeile "scrolling = false;" nich über die Funktionszeile drübersetze...)  
  
Humm-Homm... Also, das mit "scrolling is not defined" lässt sich einfach lösen: Ganz am Anfang (vor allem anderen, vor allem außerhalb der Funktionen) "scrolling" einfach mal definieren:  
  
`var scrolling = false;`{:.language-javascript}  
  
Damit vermeidest du den not-defined-error auf jeden Fall  
  
Das andere ... muss ich mal selber testen / googeln. Moment...  
  
Okay. [Ein identisches Minimalbeispiel funktioniert.](http://jsfiddle.net/kxntb94g/1/) Allerdings nur solange, bis ich die Definition von "int" (in unserem Fall scrolling) ganz am Anfang weglasse. Scheint also, der Fehler ist gefunden.  
  
Ist eigentlich auch klar. In der Reihenfolge, wie du es hier beschrieben hast, geht es logisch nicht (wie oben begründet) und in der richtigen Reihenfolge hattest du wegen fehlender Definition von "int" einen JS-error, der wohl alles andere restlos abgebrochen hat.  
  

> By the way: window.document.getElementById("...")  ---> ist das "window" da nicht überflüssig?  
  
Ist es, du hast Recht. Genauso wie vor setInterval und clearInterval. Naja, manchmal schreib ichs, manchmal nicht. Ich gebe dir Recht - es ist übersichtlicher, es wegzulassen ;)  
  
Einen Sinn hat das "window" trotzdem (kommt mir gerade in den Sinn). Ich verwende es normalerweise nur da, wo die aufzurufende Funktion / Eigenschaft eine normale, Standardkonforme Eigenschaft von window ist. Damit kann ich rein optisch native Funktionen von selbstgeschriebenen trennen und beuge Verwirrung vor.  
  
Grüße,  
  
RIDER  
  

-- 
Camping\_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller  
  
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[ 
0 48

Menü-Box mit individuellen Scroll-Buttons - Ideen?

Roadster
  • css
  1. 0
    Matthias Apsel
    1. 0
      Roadster
      1. 0
        Auge
        1. 0
          Roadster
        2. 1
          Camping_RIDER
      2. 0
        ChrisB
        1. 0
          Camping_RIDER
          1. 0
            Roadster
  2. 0

    Grundsätzliches zur Steuerung des Scrollens von Inhalten

    Roadster
    1. 0
      Matthias Apsel
      1. 0
        Roadster
  3. 2
    ChrisB
    • meinung
    1. 0
      Roadster
      1. 0
        JürgenB
        1. 0
          Roadster
          1. 0
            JürgenB
            1. 0
              Roadster
              1. 1
                Gunnar Bittersmann
  4. 0

    Individuelle Scroll-Leiste oder designverträgliche Alternative?

    Roadster
    • design/layout
    1. 2
      Klawischnigg
      1. 0
        Roadster
        1. 0
          Klawischnigg
          1. 0
            Der Martin
            1. 0
              Gunnar Bittersmann
      2. 2
        Gunnar Bittersmann
        1. 0
          Klawischnigg
          1. 0
            Gunnar Bittersmann
      3. 0
        Stefanie M.
    2. 0
      Auge
      1. 0
        Gunnar Bittersmann
        1. 0
          Auge
          1. 0
            Der Martin
            1. 0
              Auge
            2. 0
              MudGuard
    3. 0
      Camping_RIDER
      1. 0
        Roadster
        1. 0
          Matthias Apsel
          1. 0
            Roadster
            1. 0
              Camping_RIDER
              1. 0
                Roadster
                1. 0
                  Camping_RIDER
                  1. 0
                    Roadster
                    1. 0
                      Camping_RIDER
                      1. 0
                        Roadster
  5. 0
    Gunnar Bittersmann
    1. 0
      Auge
  6. 0
    Matthias Apsel