henry: onmousewheel

hallo zusammen
ich bringe das skript einfach nicht auf die reihe. weiss jemand wie ich das anstellen muss, dass hier mehrere ebenen gescrollt werden können? die variable wheeldiv ist so immer gleich "content2", egal ob gescrollt wird oder nicht...

document.getElementById('content').onmousewheel = wheel;wheeldiv = 'content';
document.getElementById('content2').onmousewheel = wheel;wheeldiv = 'content2';

if (window.addEventListener) {
   document.getElementById(wheeldiv).addEventListener('DOMMouseScroll', wheel, false);
   }

gruss
henry

  1. Hallo!

    die variable wheeldiv ist so immer gleich "content2", egal ob gescrollt wird oder nicht...

    Natürlich. Schließlich weisst du...

    document.getElementById('content').onmousewheel = wheel;wheeldiv = 'content';

    ...hier der Variable wheeldiv den Wert 'content' zu...

    document.getElementById('content2').onmousewheel = wheel;wheeldiv = 'content2';

    ...um ihn dann hier mit dem Wert 'content2' zu überschreiben.

    ciao, ww

    --
    sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
    1. hallo
      also, ich habe das ganze nun so geschrieben:

      if (window.addEventListener) {
         document.getElementById(content').addEventListener('DOMMouseScroll', wheel, false);
         document.getElementById('content').onmousewheel = function(){wheeldiv = 'content';wheel();}

      document.getElementById('content2').addEventListener('DOMMouseScroll', wheel, false);
        document.getElementById('content2').onmousewheel = function(){wheeldiv = 'content2';wheel();

      }

      nun funktionierts einwandfrei in safari, aber in firefox geht gar nichts mehr....:-(

      1. jetzt ist alles klar:
        safari unterstützt onmousewheel, addEventListener wird nicht interpretiert.
        firefox unterstützt addEventListener, onmousewheel wird nicht interpretiert.

        ich muss also wohl für jede scrollebene eine eigene "wheel"-funktion schreiben....

        gruss
        henry

        1. ich muss also wohl für jede scrollebene eine eigene "wheel"-funktion schreiben....

          oje, das glaub ich eigentlich nicht...

          über gib doch einfach das objekt (div) an die wheel funktion...

          bzw. wenn du es mit onmousewheel = wheel machst dann kannst du ja innerhalb von wheel mit this auf das div zugreifen..

          Gruß

          1. hallo christian
            vielen dank für den tipp. wie ich das genau mit "this" machen muss, blicke ich aber grad nicht.. .und wie löse ich das mit dem addEventListener?
            ich denke auch, dass es eine elegantere lösung geben müsste als für jedes div eine eigene funktion zu schreiben...

            so siehts im moment aus:

            function scrollwheel(){
            document.getElementById('content1').onmousewheel = wheel;
              document.getElementById('content2').onmousewheel = wheel;
              document.getElementById('content3').onmousewheel = wheel;

            if (window.addEventListener) {
              document.getElementById(content1').addEventListener('DOMMouseScroll', wheel, false);
              document.getElementById('content2').addEventListener('DOMMouseScroll', wheel, false);
              document.getElementById('content3').addEventListener('DOMMouseScroll', wheel, false);
              }

            }

            var wheeldiv

            function wheel(event){
             wheeldiv = 'content1';
              var delta = 0;
              if (!event) event = window.event;
              if (event.wheelDelta) {
               delta = event.wheelDelta/120;
               if (window.opera) delta = -delta;
              } else if (event.detail) {
               delta = -event.detail/3;
              }
              if (delta > 0)wheelup();
              if (delta < 0)wheeldown();
              return false;
            }

            function wheelup(){
              dw_scrollObj.slideDur = 0;
              dw_scrollObj.scrollBy(wheeldiv,0,30);
              return false;
            }

            function wheeldown(){
              dw_scrollObj.slideDur = 0;
              dw_scrollObj.scrollBy(wheeldiv,0,-30);
              return false;
            }

            window.onload = scrollwheel;

            1. Hi,

              vielen dank für den tipp. wie ich das genau mit "this" machen muss, blicke ich aber grad nicht.. .und wie löse ich das mit dem addEventListener?

              also den eventlistener musst du natürlich schon an jedes DIV dran hängen. das sollte klar sein. evtl kannst du aber auch hier mit einer schleife arbeiten.

              ich denke auch, dass es eine elegantere lösung geben müsste als für jedes div eine eigene funktion zu schreiben...

              function wheel(event){
              wheeldiv = 'content1';
                var delta = 0;
                if (!event) event = window.event;
                if (event.wheelDelta) {
                 delta = event.wheelDelta/120;
                 if (window.opera) delta = -delta;
                } else if (event.detail) {
                 delta = -event.detail/3;
                }
                if (delta > 0)wheelup();
                if (delta < 0)wheeldown();
                return false;
              }

              hier solltest du dann mit this auf das objekt zugreifen können, dass das event ausgelöst hat:

              function wheel(event){
               wheeldiv = this.id; // die id von dem div, dass das event aufgerufen hat.
               // ...
              }

              wenn du dann direkt schon das objekt/div hast (this), brauchst du dann noch dw_scrollObj ? was macht das?

              Gruß

              1. hi christian
                super. jetzt klappts! – vielen dank für die hilfe!

                wenn du dann direkt schon das objekt/div hast (this), brauchst du dann noch dw_scrollObj ? was macht das?

                ich brauche das skript von dyn-web für scrollbars. dw_scrollObj ist die scrollfunktion in diesem skript. damit bewegen sich beim maus-rad-scrollen auch die scrollbars...

                gruss
                henry

                1. Hi

                  schön dass es klappt.

                  ich brauche das skript von dyn-web für scrollbars. dw_scrollObj ist die scrollfunktion in diesem skript. damit bewegen sich beim maus-rad-scrollen auch die scrollbars...

                  Hm? Also wenn ich mir ein Div mache mit overflow: auto, so dass scrollbalken entstehen, wenn der inhalt zu groß ist, dann scrollt das Div automatisch, wenn ich mit dem Mausrad hantiere... (die scrollbalken natürlich dann auch.)

                  Gruß
                  Christian

                  1. Hm? Also wenn ich mir ein Div mache mit overflow: auto, so dass scrollbalken entstehen, wenn der inhalt zu groß ist, dann scrollt das Div automatisch, wenn ich mit dem Mausrad hantiere... (die scrollbalken natürlich dann auch.)

                    das skript beinhaltet selbstgestaltete scrollbars.
                    http://www.dyn-web.com/dhtml/scroll/scroll-multi.html.

                    gruss
                    henry

                    1. Hm? Also wenn ich mir ein Div mache mit overflow: auto, so dass scrollbalken entstehen, wenn der inhalt zu groß ist, dann scrollt das Div automatisch, wenn ich mit dem Mausrad hantiere... (die scrollbalken natürlich dann auch.)

                      das skript beinhaltet selbstgestaltete scrollbars.
                      http://www.dyn-web.com/dhtml/scroll/scroll-multi.html.

                      gruss
                      henry

                      hm, naja, find ich zwar ein bisschen unnötig, aber ok...

                      Gruß!