Warum geht das nicht?
Napoleon
- javascript
Hallo,
ich habe hier ein JS das einen "countdown" anzeigen soll. Aber leider geht das nicht.
Hier mal das Script:
<script type='text/javascript'>
var jahr=2006, monat=5, tag=2, stunde=10, minute=00, sekunde=00;
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
function countdown() {
startDatum=new Date(); // Aktuelles Datum
// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
if(startDatum<=zielDatum) {
var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
// Jahre
if(startDatum<zielDatum) {
while(startDatum<zielDatum) {
if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
}
startDatum.setFullYear(startDatum.getFullYear()-1);
}
// Restliche Tage zum Monatsende ermitteln
var restTage=0;
var m=startDatum.getMonth();
if(m==1-1|| m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1)
restTage=31-startDatum.getDate();
else if(m==4-1|| m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
else if(m==2-1) {
if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0
|| startDatum.getFullYear()%400==0))
restTage=29-startDatum.getDate(); // Schaltjahr
else restTage=28-startDatum.getDate();
}
// Start- und Ziel-Tag merken und auf 1 setzen
var startTag=startDatum.getDate();
var zielTag=zielDatum.getDate();
startDatum.setDate(1);
zielDatum.setDate(1);
// Monate
if(startDatum<zielDatum) {
while(startDatum<zielDatum) {
if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
}
startDatum.setMonth(startDatum.getMonth()-1);
}
// Tatsächlichen Start- und Ziel-Tag berücksichtigen
if(startDatum.getMonth()==zielDatum.getMonth()) {
if(startTag<=zielTag) startDatum.setDate(startTag);
else {
monate--;
tage=restTage+1;
}
}
else {
startDatum.setMonth(startDatum.getMonth()+1);
if(startTag>=zielTag) tage=restTage+1;
else {
monate++;
startDatum.setDate(startTag);
}
}
zielDatum.setDate(zielTag);
// Tage
restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
tage+=restTage;
// Stunden
stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
// Minuten
minuten=Math.floor((zielDatum-startDatum)/(60*1000));
startDatum.setTime(startDatum.getTime()+minuten*60*1000);
// Sekunden
sekunden=Math.floor((zielDatum-startDatum)/1000);
// Anzeige formatieren
(jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
(monate!=1)?monate=monate+" Monate, ":monate=monate+" Monat, ";
(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
(stunden!=1)?stunden=stunden+" Stunden, ":stunden=stunden+" Stunde, ";
(minuten!=1)?minuten=minuten+" Minuten und ":minuten=minuten+" Minute und ";
if(sekunden<10) sekunden="0"+sekunden;
(sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";
document.getElementById('countdown').innerHTML =
stunden+minuten+sekunden;
setTimeout('countdown()',1000);
}
// Anderenfalls alles auf Null setzen
else document.countdownform.countdowninput.value=
"0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";
}
countdown();
</script>
Aufrufen tu ich das dann so:
<class="Stil2" id='countdown();'>
Wo liegt denn der Fehler?
Gruß,
Napoleon
hallo Napoleon,
Aufrufen tu ich das dann so:
<class="Stil2" id='countdown();'>
Dieser "Aufruf" ist unverständlich, kannst du das irgendwie erläutern? Es müßte wohl anstelle der von dir verwendeten "id" ein EventHandler eingesetzt werden.
Grüße aus Berlin
Christoph S.
Hallo,
du meinst das so oder:
<body onload="countdown();">
Wenn ich das nehme, dann gehts aber auch nicht. Und mit der ID da will ich den anzeigen lassen :-) ist das denn nicht richtig?
Gruß,
Napoleon
hallo,
du meinst das so oder:
<body onload="countdown();">
Ja, genau, _ungefähr_ sowas meine ich. Ob das unbedingt im <body> angegeben werden muß, weiß ich allerdings auch nicht.
Wenn ich das nehme, dann gehts aber auch nicht.
Und welche Fehlermeldungen bekommst du? Im Firefox und in Opera gibt es eine "Javascript-Konsole", die sehr hilfreich ist, weil sie dir den genauen Ort nennt, an dem der Fehler aufgetreten ist (es versteht sich ja von selbst, daß du während der Entwicklungsphase auf gar keinen Fall den IE benutzt)
Und mit der ID da will ich den anzeigen lassen :-) ist das denn nicht richtig?
Nein, das ist nicht richtig.
Grüße aus Berlin
Christoph S.
Hallo Napoleon,
ohne jetzt alles durchblickt zu haben:
document.getElementById('countdown').innerHTML =
stunden+minuten+sekunden;
hier füllst du ein Element mit der ID 'countdown',
else document.countdownform.countdowninput.value=
"0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";
hier schreibst du etwas in ein Formularelement mit Namen 'countdowninput',
<class="Stil2" id='countdown();'>
und was soll das sein?
Gruß, Jürgen