Suche gutes Countdown-Script
Niklas
- javascript
Hi!
Ich suche ein guten Countdownscript, das die verbleibenden Tage (evtl. auch Monate - das wäre noch besser, aber nicht nötig), Stunden, Minuten, Sekunden und Hundertstel- bzw. Millisekunden (das is nur ne Spielerei, wäre mir aber wichtig :-) ) anzeigt.
Es sollte des Weiteren ein zweites Datum laufen lassen, sobald das erste abgelaufen ist.
Hier hab ich schon mal einen, den ich gern verwenden würde, dem fehlen halt nur die Millisekunden:
<head>
<title>Ein Countdown mit JavaScript</title>
<meta name="robots" content="noindex,nofollow">
<style type="text/css">body{background-color:#ffffff};input {background-color:#ffffff;border-width:1};p{font-size:80%}</style>
<script language="JavaScript">
var jahr=2004, monat=7, tag=16, stunde=11, minute=00, sekunde=0; // Ziel-Datum in MEZ
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;
/* Allgemeines Vorgehen:
* Zunächst werden die vollen Jahre gezählt
* und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
* Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats berechnet
* und danach die tatsächlichen Monatstage wieder mit einbezogen.
* Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
* Die restliche Differenz zwischen Start- und Ziel-Zeit wird mit Tagen aufgefüllt und
* was dann noch übrig bleibt, in Stunden, Minuten und Sekunden ausgedrückt.*/
// 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.countdownform.countdowninput.value=jahre+monate+tage+stunden+minuten+sekunden;
setTimeout('countdown()',200);
}
// DAS IST NEU:
// wenn Countdown abgelaufen:
else {
var jahr=2004, monat=8, tag=30, stunde=7, minute=50, sekunde=0; // neues Ziel-Datum in MEZ
zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
if(startDatum<=zielDatum)countdown(); // neuen Countdown starten
// wenn zweiter Countdown abgelaufen, alles auf Null setzen
else document.countdownform.countdowninput.value="Zur Zeit sind keine weiteren Arbeiten angekündigt";
}
}
</script>
</head>
<body scroll="auto" onload="countdown()">
<br>
<p></p>
<form name="countdownform"><p><input size="75" name="countdowninput" style="background-color:#8ad1ee;border-width:0" onfocus="if(this.blur)this.blur()"></p></form>
<p></p>
</body>
<html>
Ich möchte noch anmerken, dass dieses Script NICHT von mir ist!
Ich hätte da ne gute Seite für dich...
Sie heisst google.com :D
Hier ist dein Script
http://www.onetwomax.de/magazin/7704/Countdown_Script_fuer_die_Webseite.htm
Greez -michi-
Ich hätte da ne gute Seite für dich...
Sie heisst google.com :D
Hier ist dein Script
http://www.onetwomax.de/magazin/7704/Countdown_Script_fuer_die_Webseite.htm
Greez -michi-
Danke, aber das hat weder ne Anzeige für Millisekunden, noch kann man ein zweites Datum einstellen.