Javascript sleep Funktion
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
basteln
bestimmen
bisheriger entwurf
chip
code
dank
echten umsetzung
funktion
gesamte verarbeitung
http
last
problem
realisieren
schauen
schleife
sekunde
software
standard
suche
url
-
Gibt es in Javascript nicht sowas ähnliches wie iene Sleep Funktion? Ich möchte einen ganz einfachen Timer basteln:
function timer(sec){ for (var time = sec; time = 0; time--) { document.getElementById('time').innerHTML = milliseconds; if(time = 10){ alert('Noch 10 Sekunden');} }} timer(60);
Der einfach von einer bestimmen Anzahl von Sekunden herunterzählt, bei 10 Sekunden eine Meldung gibt und das noch in einer Box anzeigt. Wie kann ich jetzt aber sagen er soll das nur jede Sekunde machen, gibts nicht sowas wie sleep(1000); ? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Standard ist das in JavaScript nicht aber hier findest du ein Workaround wie du die Funktion selber basteln kannst: http://schorschblog.blogspot.de/2010/10/javascript-sleep-funktion.html
Gruß S. Brosch -
software-brosch schrieb:
Standard ist das in JavaScript nicht aber hier findest du ein Workaround wie du die Funktion selber basteln kannst: http://schorschblog.blogspot.de/2010/10/javascript-sleep-funktion.html
Gruß S. Brosch
Danke, dann sollte
<script type="text/javascript"> function sleep(ms){ var anfang=(new Date()).getTime(); var ende=anfang+ms; while((new Date()).getTime() < ende){}; } function timer(sec){ for (var time = sec; time = 0; time--) { document.getElementById('time').innerHTML = time; sleep(1000); }} </script> <body onload="timer(1);"> <div>Seconds: <span id="time"></span></div> </body>
doch eigentlich funktionieren, nicht? -
Ja geht aber nicht, also habe ich geschaut wo es klemmt. Du hast die for-Schleife falsch gesetzt. Die Abbruchbedingung passt nicht. Nachfolgend der Code:
<!DOCTYPE html> <html> <head> </head> <body onload="timer(10);"> <div>Seconds: <span id="time"> </span></div> <script type="text/javascript"> function sleep(ms){ var anfang=(new Date()).getTime(); var ende=anfang+ms; while((new Date()).getTime() < ende){}; } function timer(sec){ for (var time = sec; time > 0; time = time - 1) { //alert(time); document.getElementById('time').innerHTML = time; sleep(1000); continue; } } </script> </body> </html>
Der Code funktioniert allerdings nur wenn man das auskommentierte alert nicht mehr kommentiert. Du musst noch irgendwie schauen wie der Wert live übernommen wird. Mit alert gehts ohne nicht. Hast du mal geschaut ob es da nicht fertige Scripts gibt. Ansonsten mal bei sourceforge oder chip.de abschauen. Mit Chrome oder Firefox mit Firebug sollte das kein Problem sein.
Gruß S. Brosch -
software-brosch schrieb:
Ja geht aber nicht, also habe ich geschaut wo es klemmt. Du hast die for-Schleife falsch gesetzt. Die Abbruchbedingung passt nicht. Nachfolgend der Code:
<!DOCTYPE html> <html> <head> </head> <body onload="timer(10);"> <div>Seconds: <span id="time"> </span></div> <script type="text/javascript"> function sleep(ms){ var anfang=(new Date()).getTime(); var ende=anfang+ms; while((new Date()).getTime() < ende){}; } function timer(sec){ for (var time = sec; time > 0; time = time - 1) { //alert(time); document.getElementById('time').innerHTML = time; sleep(1000); continue; } } </script> </body> </html>
Der Code funktioniert allerdings nur wenn man das auskommentierte alert nicht mehr kommentiert. Du musst noch irgendwie schauen wie der Wert live übernommen wird. Mit alert gehts ohne nicht. Hast du mal geschaut ob es da nicht fertige Scripts gibt. Ansonsten mal bei sourceforge oder chip.de abschauen. Mit Chrome oder Firefox mit Firebug sollte das kein Problem sein.
Gruß S. Brosch
Es lädt einfach ewig und gibt dann 1 aus. Nach vorhandenen Scripts hab ich gesucht, aber die sind alle zu viel. Einfach von einer gewissen zeit nach 0 zählen und 2 Alerts ausgeben. -
Dein bisheriger Entwurf entspricht einer echten Umsetzung einer "sleep"-Funktion. Allerdings entnehme ich deinem Eröffnungspost, dass du nur auf der Suche nach einem simplen Timer bist. Den könntest du wesentlich einfacher Folgendermaßen realisieren:
[...] <body onload="timer(10);"> <div>Seconds: <span id="time"> </span></div> <script type="text/javascript"> function timer(sec) { document.getElementById('time').innerHTML = sec; if (sec > 0) { setTimeout(function() { timer(sec-1); }, 1000); } } </script> </body> [...]
-
c143 schrieb:
Eventuell sollte noch bedacht werden, dass eine richtige "sleep"-Funktion (wie sie bisher auch umgesetzt wurde) die gesamte Verarbeitung der Seite blockiert. Links klicken oder Text in eine Textbox schreiben ist damit unmöglich während sleep läuft. Gleichzeitig wird die
Es lädt einfach ewig und gibt dann 1 aus.
-Schleife eine unnötig hohe CPU-Last verursachen…while
Beitrag zuletzt geändert: 16.1.2013 19:11:08 von hackyourlife -
ploco schrieb:
Dein bisheriger Entwurf entspricht einer echten Umsetzung einer "sleep"-Funktion. Allerdings entnehme ich deinem Eröffnungspost, dass du nur auf der Suche nach einem simplen Timer bist. Den könntest du wesentlich einfacher Folgendermaßen realisieren:
[...] <body onload="timer(10);"> <div>Seconds: <span id="time"> </span></div> <script type="text/javascript"> function timer(sec) { document.getElementById('time').innerHTML = sec; if (sec > 0) { setTimeout(function() { timer(sec-1); }, 1000); } } </script> </body> [...]
Danke, funktioniert perfekt! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage