Und wieder mal scrollBy();
Robert
- javascript
Na dann, guten Abend alle zusammen.
Habe ein kleines Problemchen mit folgender Funktion (ist jedoch kein Fehler - hoffe ich):
DAS SCRIPT:
function scroll2right(pos) {
var x = 0;
if (window.pageXOffset) {
x = window.pageXOffset;
} else if (document.body && document.body.scrollLeft) {
x = document.body.scrollLeft;
}
while(x < pos) {
setTimeout("window.scrollBy(10,0)",10);
x = x + 10;
}
}
DAS PROBLEMCHEN:
Das Ding rennt los wie der Blitz! Ich möchte zwischen jedem Durchlauf der "while()" eine etwas längere Pause haben, damit die Bewegung langsamer stattfindet.
Die 10 Millisekunden (habe es auch mit 1000 versucht) in der "setTimeout" werden scheinbar lediglich beim ersten Durchlauf berücksichtigt, danach rennt die "while()" eben so schnell wie mein Rechner nur kann.
1. FRAGE:
Kann es überhaupt sein, dass die in der "setTimeout" eingestellte Verzögerung nur im ersten Durchlauf berücksichtigt wird?
2. FRAGE:
Wenn ja, was kann ich dagegen tun?
3. FRAGE:
Wenn nein, kann ich evtl. mit einer anderen Schleifen-Timeout-Konstellation (z.B. "for()") das gleiche erreichen wie im Beispiel oben - nur funktionierend?
DAS BETROFFENE PROJEKT FINDET IHR UNTER:
http://www.ckconsulting.de/preview
(Inhalte sind allerdings noch keine drin ...)
MEINE TESTBROWSER (mit Version):
Vielen Dank schon mal für eure Hilfe! Auch für kurze Berichte, ob es bei euch auch so dermaßen losflitzt, wäre ich dankbar.
Gruß Robert
PS: Hab mir das Forum schon gründlich angeschaut. Ich hoffe ich habe einen Thread der mein Thema bearbeitet nicht übersehen ...
netter effekt ;-)
also bei mir läuft er zügig ab, aber flitzt nicht zu schnell. genau so würd ich mir das tempo vorstellen.
ich denke mal, wenn die zeit mit einer einstellung von z.b. "1000" nichts ändert (was mich wundert), könntest doch mal die schrittweite von den 10px auf 5px oder gar 1px pro durchlauf reduzieren .. das müsste an sich schon langsamer laufen ...
gruß hein
Hi,
- FRAGE:
Kann es überhaupt sein, dass die in der "setTimeout" eingestellte Verzögerung nur im ersten Durchlauf berücksichtigt wird?
Du schießt mit der Geschwindigkeit Deines Rechners eine Anzahl von setTimeout los, die dann alle mit einer Verzögerung von 10 ms nach dem Losschießens im Abstand des Losschießens ein Stückchen scrollen. Da kannst Du dir die Auszeit auch gleich ganz sparen.
- FRAGE:
Wenn ja, was kann ich dagegen tun?
Entweder Du erhöhst bei jedem Schleifendurchgang die Zeit um einen Faktor,oder Du verläßt die Schleife nach dem ersten Aufruf wieder und rufst sie durch den Timeout wieder auf.
Z.B.:
setTimeout("window.scrollBy(10,0)",10*x/10)
Grüße,
Ronny