Countdown
Cyberastronaut
- javascript
Hallo zusammen,
obwohl ich gesucht habe konnte ich leider nichts finden, was mich weiter bringt.
Folgendes Problem.
Ich habe einen Countdown eingebaut. Dieser funktionert fast einwandfrei. Er zählt die Jahre, Tage, Stunden, Minuten und Sekunden bis zu einem genauen Zeitpunkt, welcher durch Datum und Uhrzeit definiert ist.
Leider gibt es einen Fehler. Die Veranstaltung fängt um am 05. Juli um 16.00 Uhr an. Dementsprechend berechnet das Skript nun eine Restzeit von 43 Tagen, undefined Stunden (hier müsste eigentlich 0 stehen), 27 Minuten und 0 Sekunden.
Warum setzt er statt undefined nicht wie bei den Sekunden einfach eine Null rein?
Ich bin leider keine Javascript Profi und muss das unbedingt korrigieren. Die Befehle verstehe ich teilweise, allerdings habe ich es nicht geschafft es zu korrigieren.
Hier der Code.
<script language="JavaScript1.2" type="text/javascript" src="menu/mm_css_menu.js"></script>
<script language="Javascript">
<!--
var CountdownJahr = 2008;
var CountdownMonat = 7;
var CountdownTag = 5;
var CountdownStunde = 16;
var CountdownMinute = 00;
var CountdownSekunde = 0;
function CountdownAnzeigen()
{
var Jetzt = new Date();
var Countdown = new Date(CountdownJahr, CountdownMonat-1, CountdownTag, CountdownStunde, CountdownMinute, CountdownSekunde);
var MillisekundenBisCountdown = Countdown.getTime()-Jetzt.getTime();
var Rest = Math.floor(MillisekundenBisCountdown/1000);
var CountdownText = "";
if(Rest >= 31536000)
{
var Jahre = Math.floor(Rest/31536000);
Rest = Rest-Jahre*31536000;
if(Jahre > 1 || Jahre == 0)
{
CountdownText += Jahre + " Jahre ";
}
else if(Jahre == 1)
{
CountdownText += Jahre + " Jahr ";
}
}
if(Rest >= 86400)
{
var Tage = Math.floor(Rest/86400);
Rest = Rest-Tage*86400;
if(Tage > 1 || Tage == 0)
{
CountdownText += Tage + " Tagen ";
}
else if(Tage == 1)
{
CountdownText += Tage + " Tag ";
}
}
if(Rest >= 3600)
{
var Stunden = Math.floor(Rest/3600);
Rest = Rest-Stunden*3600;
if(Stunden > 1 || Stunden == 0)
{
CountdownText += Stunden + " Stunden ";
}
else if(Stunden == 1)
{
CountdownText += Stunden + " Stunde ";
}
}
if(Rest >= 60)
{
var Minuten = Math.floor(Rest/60);
Rest = Rest-Minuten*60;
if(Minuten > 1 || Minuten == 0)
{
CountdownText += Minuten + " Minuten ";
}
else if(Minuten == 1)
{
CountdownText += Minuten + " Minute ";
}
}
if(Rest > 1 || Rest == 0)
{
CountdownText += Rest + " Sekunden ";
}
else if(Rest==1)
{
CountdownText += Rest + " Sekunde ";
}
window.setTimeout("CountdownAnzeigen()", 1000);
window.document.uhr.Tage.value = Tage ;
window.document.uhr.Stunden.value = Stunden ;
window.document.uhr.Minuten.value = Minuten ;
window.document.uhr.Sekunden.value = Rest ;
}
//-->
</script>
</script>
Also bei mir gehts. (Firefox 2, WinXP).
Ich habe nur die Ausgabe in die Statusbar umgeleitet.
Gruß!
Hi,
Leider gibt es einen Fehler. Die Veranstaltung fängt um am 05. Juli um 16.00 Uhr an. Dementsprechend berechnet das Skript nun eine Restzeit von 43 Tagen, undefined Stunden (hier müsste eigentlich 0 stehen), 27 Minuten und 0 Sekunden.
Warum setzt er statt undefined nicht wie bei den Sekunden einfach eine Null rein?
weil in disem Fall
if(Rest >= 3600)
übersprungen und daher
var Stunden = Math.floor(Rest/3600);
nicht gesetzt wird.
Du solltest Dir angewöhnen, alle Variablen mit sinnvollen Werten, in diesem Fall mit 0, vorzubelegen.
freundliche Grüße
Ingo
Ich habe das Skript kopiert. Was muss ich denn ändern, damit er die 0 rein setzt
Danke
Hi,
Ich habe das Skript kopiert. Was muss ich denn ändern, damit er die 0 rein setzt
Du solltest einfach mal die Grundlagen von Javascript nachlesen: http://de.selfhtml.org/javascript/sprache/variablen.htm
freundliche Grüße
Ingo