onmousewheel
henry
- javascript
0 wucher wichtel0 henry0 henry0 Christian S.0 henry0 Christian S.0 henry0 Christian S.0 henry
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
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
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....:-(
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
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ß
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;
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ß
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
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
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? 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ß!