Kleines Problemchen mit Javascript.
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anfang
angabe
ausgeben
basteln
code
countdown
dank
ende
fehler
jahr
leerlauf
millisekunde
objekt
sagen
sekunde
testen
verschiedenen teilen
versuch
warten
zeile
-
Hi. Kenne mich mit JS kein bischen aus, habe aber versucht einen Counter zu basteln, der wenn er runtergezählt hat mit <meta http-equiv=\"refresh\" content=\"0 url=test.htm\"> aktualisiert.
Aber er zählt nur bis 9, (also rennt einmal durch), dann läuft Firefox im Leerlauf und der IE sagt mir dass er in Zeile 1 ein Objekt erwartet.
Kann mir bitte wer sagen warum?
<script language=\"Javascript\">
<!--
var countdown = 10;
function doCount()
{
if (countdown > 0)
{
document.write(countdown)
countdown = countdown - 1
window.setTimeout(\'doCount()\',1000)
}
else
{
document.write(\"<meta http-equiv=\\\"refresh\\\" content=\\\"0 url=test.htm\\\">\")
}
}
doCount();
//-->
</script> -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich kenne mich auch nicht mehr so richtig aus. Ist jetzt schon 2 Jahre her, dass ich JS gemacht habe aber:
1: ich denke auch bei JS müsste z.B. bei : countdown = countdown - 1 ein ; ans Ende
2: dein Countdown soll 10 (1000sec warten) 9 (1000sec warten) 8 (1000sec warten)...
ausgeben
Mach einfach mal die sekunden weiter runter. Dann kannst du am anfang schneller und besser testen. Wenn es geht stell sie Wieder hoch ;)
(oder verstehe ich das Falsch?)
naja versuch es erstmal mit den Semikolons. -
THX, hat aber leider nichts gebracht. Und die Angabe erfolgt in Millisekunden. Aber ich schätze dass der Fehler im oberen document.write liegt. So funktioniert es nämlich einwandfrei:
<script language=\"Javascript\">
<!--
var countdown = 10
function doCount()
{
if (countdown > 0)
{
countdown = countdown - 1
window.setTimeout(\'doCount()\',1000)
}
else
{
document.write(\"lol\")
}
}
doCount();
//-->
</script> -
Zunächst einmal: <script language=\"\" ist veraltet. Die Seite, wo du das her hast, solltest du in Zukunft vermeiden, da eine ganze Menge veralteter Code im Netz rumschwirrt.
Schau lieber mal hier vorbei:
http://de.selfhtml.org/javascript/
Ansonsten ist der Fall relativ klar:
document.write(); schreibt ohne Probleme Text in das Dokument, solange das Dokument noch am laden ist.
In deinem Fall dürfte das Dokument aber bereits fertig geladen sein, bevor das erste setTimeout den nächsten Funktionsaufruf erzeugt.
Und sobald die Seite bereits fertig geladen ist, erzeugt document.write() eine vollkommen neue und leere Seite und schreibt dort die Werte hinein.
Dabei gehen die Informationen von der vorherigen Seite verloren und entsprechend existiert dein countdown-script auf der nächsten Seiten auch nicht mehr.
Hier mal eine andere Lösung:
<form name=\"formular\" id=\"formular\"> <div><input type=\"text\" name=\"feld\" value=\"10\" /></div> </form> <script type=\"text/javascript\">/* <![CDATA[ */ counter=10; function countdown() { counter--; document.formular.feld.value=counter; if(counter==0)location.href=\"test.htm\"; } setInterval(countdown,1000); /* ]]> */</script>
-
Danke. Ich habe den Script aus verschiedenen Teilen von anderen Scripts zusammengebastelt, und eigendlich nur gegooglet.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage