Frage von mineoriti, 31

Wie kann ich nach dem Timeout die Funktion beenden?

var degrees=1;{ function spinFunction(){ degrees++; setTimeout(function() { show = false; }, Math.floor((Math.random() * 10000) + 3000)); var dz=document.getElementById("spin"); dz.style.MsTransform = "rotate("+degrees+"deg) translate(0px,0)"; dz.style.MozTransform = "rotate("+degrees+"deg) translate(0px,0)"; dz.style.OTransform = "rotate("+degrees+"deg) translate(0px,0)"; dz.style.WebkitTransform = "rotate("+degrees+"deg) translate(0px,0)"; dz.style.transform = "rotate("+degrees+"deg) translate(0px,0)"; window.setTimeout("spinFunction()", 1);

}

}

Antwort
von Sarkophator, 17

Was meinst du denn mit "Die Funktion nach dem Timeout beenden"?

Meinst du, dass beim nächsten Aufruf die Funktion nicht mehr weiter aufgerufen werden soll? Dann kannst du einfach eine Variable entsprechend auf true setzen und vor dem nächsten Aufruf von setTimeout danach checken und ggf. die Ausführung der Funktion abbrechen. Kannst ja auch degrees dafür nutzen.

Wenn du was anderes meinst, dann musst du dich schon etwas genauer fassen.

Mal abgesehen davon kannst du, anstatt immer wieder setTimeout aufzurufen, setInterval verwenden. Du kriegst (in beiden Fällen) eine ID zu dem jeweiligen Timeout/Interval zurück, mittels der du mit clearTimeout/clearInterval die weitere Ausführung davon abbrechen kannst.

Desweiteren braucht man die Herstellerpräfixe für CSS Transform nicht mehr zu verwenden.

Außerdem: Bist du dir sicher, dass du für deine Sache Javascript brauchst und dass du das nicht über CSS Transition/CSS Animations lösen kannst?

Antwort
von RakonDark, 15

vorher

var timer;

dann

timer = window.setTimeout

und dann irgendwie bei einer bedingung ,

window.clearTimeout(timer);

aber die funktion setTimeout überschreiben ist ja auch so ein ding für sich .

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten