Countdown
Chris
- javascript
Hallo,
ich habe mir einen countdown für meine homepage in js mit informationen von div. seiten zusammengebastelt.... Allerdings stehe ich jetzt noch vor einen "kleinen" Problem, und zwar:
Wie bekomme ich es hin, wenn ein Wert nicht anfällt (z.B. Jahr), das dieser auch nicht angezeigt wird?
Hier mal der Code:
<html>
<head>
<script language="JavaScript">
// Ziel-Datum in MEZ
var jahr=2008, monat=6, tag=3, stunde=21, minute=04, sekunde=00;
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
function countdown() {
startDatum=new Date(); // Aktuelles Datum
{
var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
// Jahre
while(startDatum<zielDatum) {
jahre++;
startDatum.setFullYear(startDatum.getFullYear()+1);
}
startDatum.setFullYear(startDatum.getFullYear()-1);
jahre--;
// Monate
while(startDatum<zielDatum) {
monate++;
startDatum.setMonth(startDatum.getMonth()+1);
}
startDatum.setMonth(startDatum.getMonth()-1);
monate--;
// Tage
while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
tage++;
startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
}
// 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);
}
}
</script>
</head>
<body onload="countdown()">
<form name="countdownform">
<p>
<input size="75" name="countdowninput">
</p>
</form>
</body>
</html>
Wie bekomme ich es hin, wenn ein Wert nicht anfällt (z.B. Jahr), das dieser auch nicht angezeigt wird?
In dem du ihn nicht anzeigst.
Hier mal der Code:
<html>
Kein DOCTYPE?
<head>
<script language="JavaScript">
Wo hast du dieses Attribut her?
Wo ist das Pflichattribut type?
function countdown() {
soweit ich das verstehe, willst du die Differenz von zwei Daten anzeigen lassen. Deine Berechung erscheint mir sehr umständlich.
startDatum=new Date(); // Aktuelles Datum
// Jahre
...
// Monate
...
// Tage
...
warum ermittelst du hier nicht einfach die Differenzen? JS kann durchaus die Grundrechenarten.
// Anzeige formatieren
(jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
Du verwendest den Operator nicht optimal, bzw. in meinen Augen falsch. Er geht so:
variabel = Bedingung ? wert_erfüllt : wert_nicht_erfüllt;
Also bei dem obigen Code:
jahre += (jahre > 1 ? " Jahre": " Jahr") + ' ,';
und um deine eigentliche Frage zu beantworten, hier kannst du das einbauen:
jahre = !jahre ? '' : jahre + (jahre > 1 ? " Jahre": " Jahr") + ' ,';
Struppi.
Kein DOCTYPE?
habe bislang nur das menu geschrieben, da kommt noch einiges davor und danach...deswegen nur das script beachten....
Wo hast du dieses Attribut her?
Wo ist das Pflichattribut type?
<script type="text/javascript">
meinst du dies? wenn ja..dummer fehler...
warum ermittelst du hier nicht einfach die Differenzen? JS kann durchaus die Grundrechenarten.
bei uhrzeit muss ich aber nicht in 100 sondern in 60 rechnen...wie bewerkstellige ich das..? hm..
Vielen Dank für deine Hilfe.
Grüßle.
<script type="text/javascript">
meinst du dies? wenn ja..dummer fehler...
ob dumm weiß ich nicht, er ist aber nicht selten
warum ermittelst du hier nicht einfach die Differenzen? JS kann durchaus die Grundrechenarten.
bei uhrzeit muss ich aber nicht in 100 sondern in 60 rechnen...wie bewerkstellige ich das..? hm..
Deshalb schrieb ich das ja unter Jahre, Monate und Tage. Aber du hast Recht, ich hab nicht nachgedacht. Um die Differenz, so wie du sie haben möchtest, zu erhalten, muss man das wohl so machen wie du es getan hast.
Struppi.
ob dumm weiß ich nicht, er ist aber nicht selten
gut das man helferlein hat die einen auf soetwas aufmerksam machen ;)
Deshalb schrieb ich das ja unter Jahre, Monate und Tage. Aber du hast Recht, ich hab nicht nachgedacht. Um die Differenz, so wie du sie haben möchtest, zu erhalten, muss man das wohl so machen wie du es getan hast.
Zumindest funktioniert es so...wäre auch froh wenn es eine kürzere variante gibt....denn der code ist schon ziemlich lange..
wäre es möglich den code in eine externe .js-datei zu binden und diese dann in den zuständigen layern einzubinden? habe es jetzt schon einmal versucht den code ausm "<head></head>" rauszunehmen..aber dann zeigt er mir garnichts an..
Liebe Grüße.
wäre es möglich den code in eine externe .js-datei zu binden und diese dann in den zuständigen layern einzubinden? habe es jetzt schon einmal versucht den code ausm "<head></head>" rauszunehmen..aber dann zeigt er mir garnichts an..
Sicher ist das Möglich und wenn gar nichts passiert, ist das oft ein Anzeichen für einen Fehler. Diese kannst du dir auch anzeigen lassen, z.b. im Firefox in der Fehlerkonsole.
Struppi.
habe jetzt eine "countdown.html" mit:
(das <html> usw ausgelassen)
---------------------------------------------------------
<head>
<title>Datum-Countdown mit JavaScript</title>
<script src="countdown.js" type="text/javascript" />
</head>
<body onload="countdown()">
<form name="countdownform">
<p>
<input size="75" name="countdowninput">
</p>
</form>
</body>
---------------------------------------------------------
und eine "countdown.js" mit dem script:
---------------------------------------------------------
<script type="text/javascript">
// Ziel-Datum in MEZ
var jahr=2008, monat=6, tag=3, stunde=21, minute=04, 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
while(startDatum<zielDatum) {
jahre++;
startDatum.setFullYear(startDatum.getFullYear()+1);
}
startDatum.setFullYear(startDatum.getFullYear()-1);
jahre--;
// Monate
while(startDatum<zielDatum) {
monate++;
startDatum.setMonth(startDatum.getMonth()+1);
}
startDatum.setMonth(startDatum.getMonth()-1);
monate--;
// Tage
while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
tage++;
startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
}
// 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 = !jahre ? '' : jahre + (jahre > 1 ? " Jahre": " Jahr") + ' , ';
monate = !monate ? '' : monate + (monate > 1 ? " Monate": " Monat") + ' ,';
tage = !tage ? '' : tage + (tage > 1 ? " Tage": " tag") + ' ,';
stunden = !stunden ? '' : stunden + (stunden > 1 ? " Stunden": " Stunden") + ' ,';
minuten = !minuten ? '' : minuten + (minuten > 1 ? " Minuten": " Minuten") + ' ,';
sekunden = !sekunden ? '' : sekunden + (sekunden > 1 ? " Sekunden": " Sekunden");
document.countdownform.countdowninput.value=
jahre+monate+tage+stunden+minuten+sekunden;
setTimeout('countdown()',200);
}
}
</script>
---------------------------------------------------------
fehler bringt er mir folgenden:
Fehler: missing } in XML expression
Quelldatei: *zensiert*/countdown.js
Zeile: 8, Spalte: 29
Quelltext:
startDatum=new Date(); // Aktuelles Datum
Mahlzeit,
und eine "countdown.js" mit dem script:
<script type="text/javascript">
Was hat ein HTML-Tag in einer Javascript-Datei zu suchen?
MfG,
EKKi
Was hat ein HTML-Tag in einer Javascript-Datei zu suchen?
habe noch nie mit einer js.datei gearbeitet..deswegen weiß ich nicht..wie das so recht funktioniert !
Was hat ein HTML-Tag in einer Javascript-Datei zu suchen?
habe noch nie mit einer js.datei gearbeitet..deswegen weiß ich nicht..wie das so recht funktioniert !
Einfach den HTML Code löschen, in eine JS Datei gehört nur JS.
Struppi.
Einfach den HTML Code löschen, in eine JS Datei gehört nur JS.
haha göttlich..es geht es geht...merci ;)
misst ! doppelpost..
eine frage noch..mit
<input size="75" name="countdowninput">
bestimme ich wie groß die fläche sein soll in die das script eingefügt werden soll..kann man aber einfach das ganze mit zeilenumbruch oder so machen?!
grüße..
eine frage noch..mit
<input size="75" name="countdowninput">
bestimme ich wie groß die fläche sein soll in die das script eingefügt werden soll..kann man aber einfach das ganze mit zeilenumbruch oder so machen?!
einfach, indem du eine textarea nimmst, schöner indem du mit DOM Methoden ein Element (z.b. ein span) zum anzeigen nimmst.
Struppi.
ach herrje...da muss ich mich wohl auf die suche machen..
das sagt mir grad garnix, bzw wie ich es bewerkstelligen soll =)