kostenloser Webspace werbefrei: lima-city


Javascript sleep Funktion

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    c143

    c143 hat kostenlosen Webspace.

    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); ?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. s*************h

    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
  4. Autor dieses Themas

    c143

    c143 hat kostenlosen Webspace.

    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?
  5. s*************h

    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">&nbsp;</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
  6. Autor dieses Themas

    c143

    c143 hat kostenlosen Webspace.

    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">&nbsp;</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.
  7. 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">&nbsp;</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>
    [...]
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    c143 schrieb:
    Es lädt einfach ewig und gibt dann 1 aus.
    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
    while
    -Schleife eine unnötig hohe CPU-Last verursachen…

    Beitrag zuletzt geändert: 16.1.2013 19:11:08 von hackyourlife
  9. Autor dieses Themas

    c143

    c143 hat kostenlosen Webspace.

    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">&nbsp;</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!
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!