es will und will nicht scrollen
Poldi
- javascript
0 Harry
Hallo!
Folgende Funktion sollte eigentlich ein paar Menübuttons nach unten scrollen lassen, damit ein Untermenü sichtbar wird wenn man mit der Maus über den Button fährt:
function moveIt (number,length) {
var i,j,k;
for (j=1;j<length;j++) {
for (i=number+1;i<12;i++) {
if (isNav) {
obj[i].top=(25*(i+1))+j;
}
if (isIE) {
obj[i].pixelTop=(25*(i+1))+j;
}
}
}
offen=number;
offlen=length;
}
Das klappt auch hervorragend, also die Buttons sind dann unten und das Untermenü wird sichbar. Nur eines geht nicht: es scrollt nicht. Die Schleife mit dem "j" scheint nichts zu tun. Es ist so als schriebe man obj[i].pixelTop=25*(i+1)+length;
Ich habe es auch mit einer Verzögerungsschleife probiert, aber dann hat der IE nur gemeint, daß das Script eine Verzögerung verursacht und ob man es wirklich weiter ausführen will ...
Was habe ich falsch gemacht?
HILFE! :-)
viele Grüße und danke
Poldi.
Hi !
Das klappt auch hervorragend, also die Buttons sind dann unten und das Untermenü wird sichbar. Nur eines geht nicht: es scrollt nicht. Die Schleife mit dem "j" scheint nichts zu tun. Es ist so als schriebe man obj[i].pixelTop=25*(i+1)+length;
Ich habe es auch mit einer Verzögerungsschleife probiert, aber dann hat der IE nur gemeint, daß das Script eine Verzögerung verursacht und ob man es wirklich weiter ausführen will ...
Keine "Wissen"-Antwort, sonder nur ein "vielleicht, aus Erfahrung" ;-) :
Probier's mal, die Funktion ohne Schleifen zu programmieren und statt dessen rekursiv mit window.setTimeout aufzurufen. Den gleichen Effekt hat man nämlich in Visual Basic auch, wenn man Grafiken auf diese Art und weise verschieben will. Da muß dann immer noch ein DoEvents eingefügt werden, aber sowas gibt's in JS glaub ich nicht. Auf jeden Fall aber erfüllt das window.setTimeout den gleichen Zweck, egal welchen Zeitwert Du da einsetzt.
Allerdings passiert es beim IE ab und zu, daß es in rekursiven Funktionen mit Schleifenzählern nicht hinhaut. Kann also sein, daß Du die Variablen dann über ein Array und einen Instanzenzähler verwalten mußt (ist hier aber glaub ich nicht der Fall).
Eine Verzögerungsschleife hat, wie Du schon erkannt hast, keinen Zweck, da der IE die Abarbeitung des JavfaScripts fortsetzt und nicht im Traum dran denkt, die verschobene Grafik an der neuen Stelle anzuzeigen ...
Cya,
Harry