Kleiner Adventkranz per Javascript mit Datumsüberprüfung
Hilfesuchender
- javascript
Versuche nun schon seit 1. Stunde vergeblich mit folgendem Skript einen Datumsvergleich anzustreiben. Leider funktioniert es überhaupt nicht, selbst wenn ich das heutige Datum fix einstelle und nicht erst feststellen lasse:
Vielleicht findet ja ihr den groben Fehler?
DANKE
var grafik_advent1 = "../bilder/kerze1.gif alt='1. Advent'"
var grafik_advent2 = "../bilder/kerze2.gif alt='2. Advent'"
var grafik_advent3 = "../bilder/kerze3.gif alt='3. Advent'"
var grafik_advent4 = "../bilder/kerze4.gif alt='4. Advent'"
var spacer = "../bilder/spacer.gif"
function ereignis() {
var datum = new Date();
var jahr = datum.getFullYear();
var monat = datum.getMonth+1();
var tag = datum.getDate();
var jetzt = new Date(jahr,monat,tag);
var advent1 = new Date(2004,11,28);
var advent2 = new Date(2004,12,04);
var advent3 = new Date(2004,12,11);
var advent4 = new Date(2004,12,18);
if (jetzt == advent1) {
document.write("<img src="+grafik_advent1+">");
} else {
if (jetzt == advent2) {
document.write("<img src="+grafik_advent2+">");
} else {
if (jetzt == advent3) {
document.write("<img src="+grafik_advent3+">");
} else {
if (jetzt == advent4) {
document.write("<img src="+grafik_advent4+">");
} else {
document.write("<img src="+spacer+">");
}}}}}
Hej,
zunächst mal was ganz allgemeines, warum definierst Du bei einer solch überschaubaren Aufgabe jeden klimbim in ner Variable, die Du dann später sowieso nur einmal brauchst:
var grafik_advent1 = "../bilder/kerze1.gif alt='1. Advent'"
var grafik_advent2 = "../bilder/kerze2.gif alt='2. Advent'"
var grafik_advent3 = "../bilder/kerze3.gif alt='3. Advent'"
var grafik_advent4 = "../bilder/kerze4.gif alt='4. Advent'"
var spacer = "../bilder/spacer.gif"
Warum erzeugst Du hier erst eine Instanz eines Objekt, erfragst die Eigenschaften der Instanz um als allernächstes eine neue Instanz mit eben diesen Eigenschaften zu füttern?
var datum = new Date();
var jahr = datum.getFullYear();
var monat = datum.getMonth+1();
^^^
BTW: Das war ein unverzeiliches Versehen ;)
var tag = datum.getDate();
var jetzt = new Date(jahr,monat,tag);
var advent1 = new Date(2004,11,28);
var advent2 = new Date(2004,12,04);
var advent3 = new Date(2004,12,11);
var advent4 = new Date(2004,12,18);
Mag Geschmacksache sein, aber ich finde hier bietet sich eine switsch/case-Anweisung an:
if (jetzt == advent1) {
document.write("<img src="+grafik_advent1+">");
} else {
if (jetzt == advent2) {
document.write("<img src="+grafik_advent2+">");
} else {
if (jetzt == advent3) {
document.write("<img src="+grafik_advent3+">");
} else {
if (jetzt == advent4) {
document.write("<img src="+grafik_advent4+">");
} else {
document.write("<img src="+spacer+">");
}}}}}
Vielleicht findet ja ihr den groben Fehler?
Die hat vorallem die JavaScript-Konsole gefunden!
Nachdem ich jetzt groß rumgemeckert habe, bei mir funkts so auch immernoch nicht. Vermutung(kenne mich mit JS auch nicht so aus): In Java würde der Vergleich zweier unabhängiger Instanzen mit dem "=="-Operator immer false liefern, weil eben nur die Gleicheit der Instanz und nicht die Gleichheit der Eigenschaften geprüft wird. Für Dein konkretes einfaches Problem, warum nicht so:
var advent1 = '20041028';
var advent2 = '20041104';
var advent3 = '20041111';
var advent4 = '20041118';
var datum = new Date();
var str = datum.getFullYear().toString()
+ datum.getMonth().toString()
+ datum.getDate().toString();
switch (str){
case advent1:...;
case advent2:...;
case advent3:...;
case advent4:...;
}
Das sollte so funken. Hoffe habe etwas helfen können.
Mit besten Grüßen
Biesterfeld
Hallo Biesterfeld!
Vielen Dank für deine Anregungen. Ich bin dann ebenso auf den Begriff toString() gestoßen, der mit den Vergleich dann ermöglich hat. Ich habe auch das Skript dementsprechend noch effizienter gestaltet (Switch Case, ...).
Danke für deine HIlfe, jetzt klappt es.