Moin!
habe das Problem das ich ne simple "moveDiv" Funktion mit setinterval 1ms aufrufe, nur Leider haut das nich so hin wie ich mir das Vorstelle. Soll heisen das alles was setinterval unter 50 ms betrifft keinen Unterschied macht (div wandert gleichschnell nach unten egal ob 1ms oder 50ms).
setIntervall ruft die Funktion solange nicht neu auf, wie Javascript-Code ausgeführt wird.
Konkreter erzählt es John Resig (Autor von jQuery) in diesem Posting seines Blogs (englisch).
Wichtig zu wissen ist: Javascript ist in den Browsern eine Single-Task-Programmiersprache. Es wird immer nur eine einzige Programmzeile zur Zeit ausgeführt, es gibt keinerlei Interrupts, die den Programmablauf unterbrechen und anderswo in den Code springen - deshalb ist es auch absolut irrelevant, wie schnell hintereinander setInterval eine Funktion aufrufen _will_ - entscheidend ist, wie lange in Millisekunden der Browser zur Ausführung dieser Funktion tatsächlich benötigt, denn die schnellstmögliche Ausführung einer Animation bedeutet, dass diese Funktion andauernd, d.h. immer wieder von vorn und ohne Wartezeit, ausgeführt wird, so schnell es geht.
Woran kann das nur liegen, das ist simpelster code ohne Berechnungen.....
(habe das bei komplexeren selstgecodeten Funktionen festgestellt und nun auf setintervall runtergebrochen)
getElementById ist beispielsweise eine Funktion, deren Ausführung relativ lange dauert - jedenfalls verglichen mit der Variante, das Funktionsergebnis einmalig in einer Variablen zwischenzuspeichern und jeweils dort wieder abzurufen.
Es hat allerdings relativ wenig Sinn, eine Animationsfunktion zu schreiben, die man häufiger als alle 50 Millisekunden aufrufen muß, um die gewünschte Geschwindigkeit zu erreichen. Zum einen behindert eine andauern und pausenlos laufende Animation die Ausführung von anderen Javascripten (z.B. onclick-Events), und zweitens wirkt laufendes Javascript auch auf den restlichen Rechner.
- Sven Rautenberg
"Love your nation - respect the others."