SetTimeout abbrechen

Hallo!

Ich möchte eine Schleife bei Erreichen eines Wertes beenden, damit Systemressourcen geschont werden und weil ich danach weitere Funktionen ausführen möchte, bei denen die aufrufende stören würde, wenn sie weiterliefe.

Derzeit setze ich über eine IF Abfrage den Wert der horizontalen Position einer ins Bild fliegenden Tabelle, bei Erreichen von 25px auf 25 damit die Tabelle dort stehenbleibt. Die Funktion läuft aber ständig weiter.

Die Funktion wird über SetTimeout(„animateit()“,1) aufgerufen.

Laut Selfhtml wird mit diesem Befehl eine Funktion ständig mit dem angegebenen Interwall ausgeführt.

Ich möchte diesen Aufruf aber stoppen, wenn sich die Tabelle auf Position 25px befindet.

Der dafür zuständige Befehl ist clearTimeout, aber es funktioniert einfach nicht.

<!–
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
function init() {
if(ns4){
anim = document.broom;
}
else
if (ie4) {
anim = broom.style;
}
animateit()
}
function animateit() {
if(ns4||ie4){
anim.left = parseInt(anim.left)-8;
if (parseInt(anim.left) <=25)
{ clearTimeout(„animateit()“,1) }
setTimeout(„animateit()“,1);
}
}
//–>

mfg

M.Vernaglione

Der dafür zuständige Befehl ist clearTimeout, aber es
funktioniert einfach nicht.

macht er schon, nur musst du noch mal nachlesen, wie er aufzurufen ist…

foo = setTimeout("dosomething()",500);
clearTimeout(foo);

Hallo!

Das habe ich bereits so versucht. Aber das ganze Script hatte einen falschen Ansatz.

Ich habe das geändert und nun geht es :

<!–
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
function init() {
if(ns4){
anim = document.broom;
}
else
if (ie4) {
anim = broom.style;
}
aktiv = setInterval(„animateit()“,10)
}
function animateit() {
if(ns4||ie4){
anim.left = parseInt(anim.left)-10;
if (parseInt(anim.left) <=25) { clearInterval(aktiv); init2() }
}
}
//–>

<!–
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
function init2() {
if(ns4){
anim = document.broom2;
}
else
if (ie4) {
anim = broom2.style;
}
aktiv2 = setInterval(„animateit2()“,10)
}
function animateit2() {
if(ns4||ie4){
anim.top = parseInt(anim.top)-10;
if (parseInt(anim.top) <=150) { clearInterval(aktiv2); }
}
}
//–>

mfg

M.Vernaglione

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi marco
ich hab das mal kurz testen wollen, setTimeout wird doch ohnehin nur EINMAL ausgeführt, oder irre ich mich, denn wenn ich:

setTimeout(„alert(‚marco‘)“,10)

verwende, bekomm ich das pro seiten-reload nur EINMAL…