Was ist in diesem Countdownskript falsch?

MaWe4585

Grünschnabel
Hallo,
also ich bin absoluter Anfänger in sachen JavaScript. Ich möchte das hier einfach die Zahl in timeout runtergezählt wird, allerdings wird das ganze scheinbar nie aufgerufen.. wo muss ich das machen? bzw, wird das durch das "countdown()" am anfang nciht automatisch gemacht? mein Problem ist ads nichts ausgegeben wird.
Was für ein Element muss ich da genau nehmen? ich hab jetzt mal ein
<span id="ausgabe"> genommen aber weis nicht ob das so richtig ist...

HTML:
<script language="JavaScript">
var timeout = 454547;
countdown();
function timeouttime(){
var temp = timeout;
var sek = temp % 60;
temp = (temp-sek)/60;
var min temp % 60;
temp = (temp-min)/60;
var std = temp % 24;
temp = (temp-std)/24;
var tage = temp;
if(sek < 0)sek="0"+sek;
if(min < 0)min="0"+min;
if(std < 0)std="0"+std;
if(tage < 0)tage="0"+tage;

return tage+":"+std+":"+min+":"+sek ;
}

function countdown() {
    document.getElementById("ausgabe").innerHTML = timeouttime();
    timeout --;
    if (timeout < 0) {
        document.getElementById("ausgabe").innerHTML = "Fertig";
        // Countdown beenden
    } else {
        setTimeout("countdown()", 1000);
    }
}

</script>

Danke schonmal

MaWe
 
Dein Code ist etwas umständlich, aber egal.

Das hauptroblem, und der Grund warum nichts angezeigt wird ist, dass die countdown()-Funktion zu dem Zeitpunkt ausgeführt wird, zu dem der Browser den Script-Bereich lädt. Die Funktion greift per document.getElementById auf ein Element zu. Diese Element ist aber zum Zeitpunkt noch nicht geladen, weil der script-Bereich im Dokumet for dem Element mit der id "ausgabe" steht.
Du hast also deinen ersten Javascript-Error erzeugt, gratuliere! :-)

Dein Problem löst du recht einfach, indem du die countdown()-Funktion nach dem vollständigen Laden aufrufst. Ersetzte dazu einfach die Zeile "countdown()" durch die Zeile "window.onload = countdown;" und es sollte alles gehen. Ich habe allerdings deinen Code noch nicht auf andere Fehler überprüft.

Ansonsten kann ich dir noch meine Seite zu tutorials.de und die Forensuche ans Herz legen. Auf beiden findest du mehr als genug Beispiele für Countdowns, die wohl etwas eleganter programmiert sein dürften...
 
cool danke funktioniert jetzt fast alles.

Ausser dem da:

Code:
if(sek < 0)sek="0"+sek;
if(min < 0)min="0"+min;
if(std < 0)std="0"+std;
if(tage < 0)tage="0"+tage;

ich wollte eigentlich eine Null voranstellen, was aber nicht funktioniert. Also die Zahlen werden nachwievor ohne Null dargestellt. Muss/Kann ich die Zahlen irgendwie als String deklarieren oder so damit das funktioniert?
 

Neue Beiträge

Zurück