JavaScript Counter

niclas

Mitglied
Hallo zusammen,

ich versuche gerade einen schlichten counter in Javascript zu basteln der von 10 auf 0 zählt und nichts weiter dabei macht.

Ich hab es so versucht:

CODE <html>
<head>
<script language="JavaScript">
<!--
function counter(zeit)
{
document.write(zeit);
if(zeit > 0) {
setTimeout("counter("+(zeit-1)+")", 1000);
}
}
//-->
</script>
</head>
<body>
<script language="JavaScript">
<!--
counter(10);
//-->
</script>
</body>
</html>



Mein problem ist nun das er bei 9 immer einen Laufzeitfehler bringt und ich weiss nicht warum. Könnte mir jemand sagen wo dort mein Fehler liegt. Da ich ein js neuling bin finde ich es einfach nicht.
 
JavaScript ist nicht Java.

Wie lautet der Fehler?

Ist vielleicht window.setTimeout(...) nötig?
 
Mit document.write wird der gesamte Source überschrieben. Wenn die Ausgabe statt ins document z.B. in eine Textbox erfolgt, gehts:

CODE <html>
<head>
<script language="JavaScript">
<!--
function counter(zeit)
{
//document.write(zeit);
document.getElementById("txtCount").value = zeit;
if(zeit > 0) {
setTimeout("counter("+(zeit-1)+")", 1000);
}
}
//-->
</script>
</head>
<body>

<INPUT type="text" ID="txtCount">

<script language="JavaScript">
<!--
counter(10);
//-->
</script>
</body>
</html>

Griessli
Irene
 
Und wenn es nicht in eine Textbox soll (in Textboxen find ich es persönlich häßlich
wink.gif
), dann kannst es so machen:

CODE <html>
<head>
<script language="JavaScript">
<!--
function counter( zeit ) {
if ( zeit > 0 ) {
 document.getElementById( "timer" ).firstChild.nodeValue = zeit;
 window.setTimeout( 'counter( '+ (zeit-1)+' )', 1000 );
}
else
{
 document.getElementById( "timer" ).firstChild.nodeValue = "Fertig";
}

}
//-->
</script>
</head>
<body>
<p id="timer"> </p>
<script language="JavaScript">
<!--
counter(5);
//-->
</script>
</body>


Alternativ kann man auch noch das onLoad()-Tag nehmen, sähe dann so aus:


CODE <html>
<head>
<script language="JavaScript">
<!--
function counter( zeit ) {
if ( zeit > 0 ) {
 document.getElementById( "timer" ).firstChild.nodeValue = zeit;
 window.setTimeout( 'counter( '+ (zeit-1)+' )', 1000 );
}
else
{
 document.getElementById( "timer" ).firstChild.nodeValue = "Fertig";
}

}
//-->
</script>
</head>
<body onLoad="counter(10)">
<p id="timer"> </p>
</body>
 
OT
QUOTE
QUOTE Ich hab es so versucht:


Du hast meinen Tag geretten ;-) Entgegen dem Trend vieler User, in ein Forum zu trudeln und einfach mal zu schreien kann nix gebt mir, gabst Du Dir Mühe.

Ich denke nicht, dass Du solche Antworten erhalten hättest, ohne selber einen Finger krum zu machen. Evtl. zeigt das dem einen oder anderen, wie ein Forum funktioniert ;-)
 
Ich weiss zwar immer noch nicht warum ich bei meinem code einen Laufzeitfehler hatte aber eure Versionen funktionieren wunderbar.

Vielen dank für eure Hilfe
rolleyes.gif


@Alain danke für das Kompliment
rolleyes.gif
 
Zurück
Oben