JavaScript Ausgabe nach Zeit

bussyido

New member
19 November 2012
3
0
Ich habe hier folgenden Script:

<script type="text/javascript">
var index = 100;

while (index > 0) {
document.write(index + "<br />");
index--;
}
</script>

Der Script bewirkt, dass die Zahlen von 100 runter gezaehlt werden bis auf 0. Allerdings erscheinen alle Zahlen auf einmal und ich wuerde sie gerne wie einen countdown ausgeben lassen. Sprich jede sekunde eine Zahl.
Hab da nun schon verschiedenes probiert und ne Loesung war leider nicht dabei.

Hoffe das mir hier jemand helfen kann.
 
soweit war ich auch schon, aber weiß nicht wohin damit. -.-'
Hab grad erst mit der Thematik angefangen und nur was gefunden, wie ich das auf Funktionen anwende, die definiert wurden.

und so wie ich das verstehe muss ich den Timeout fuer die Ausgabe definieren

<script type="text/javascript">
var index = 100;

while (index > 0) {
document.write(index + "<br />");
setTimeout('1000')
index--;
}
</script>

bringt mich auch nicht weiter. -.-'
Wobei nen Intervall doch hilfreicher waere, weil ich ja wiederholt moechte, dass dies so funktioniert.
Oder passiert das automatisch ? :x
setTimeintervall oder nicht ?
 
Du verwendest setTimeout() falsch. Du musst als ersten Parameter eine Funktion übergeben, die nach der als zweiten Parameter angegeben Anzahl an Millisekunden ausgeführt wird. Ergo:
HTML:
<script type="text/javascript">
var index = 100;
var countdown = function () {
    document.write(index + '<br />');
    index -= 1;

    if (index > 0) {
        setTimeout(countdown, 1000);
    }
};

countdown();
</script>
Ob Du nun setTimeout() oder setInterval() nutzst, ist letztendlich nur Geschmackssache. Beim setInterval() muss dann halt die Abbruchbedingung in die Funktion statt des Erneuern des Timeouts.

PS: Das Ganze nochmal bei jsfiddle.
 
Zuletzt bearbeitet:
Danke fuer die hilfreiche Erklaerung. :)
Allerdings ist es grad so, dass von 100 auf 99 das passiert und danach tut sich leider nichts mehr. :x
 
Code:
var i = 100;
setInterval(function(){
    document.write((i--) + "<br/>");
},1000);

Edit: Oops... falschrum
 
Zuletzt bearbeitet: