Hallo!
Ich habe ein kleines Problem mit Javascript. Und zwar erstelle ich gerade einen einfachen DatePicker bzw. Kalender und wenn man auf ein Datum klickt, möchte ich das Datum in ein Textfeld schreiben lassen.
Damit das passiert, füge ich jedem Datum (das eine Tabellenzelle ist) einen Event-Handler hinzu.
Hier mal auszugsweise der Quellcode:
currentDate und lastDayInCalendar sind beides Date-Objekte. click-Event möche ich dann meine Funktion select() aufrufen, die die Zeit mit übergeben bekommt und dann das Textfeld entsprechend formatiert füllt.
Soweit funktioniert das vom Prinzip her auch. Das Problem ist nur, dass (egal welches Datum ich klicke) immer der letzte currentDate-Wert in das Feld geschrieben wird. Also ein Tag nach dem Wert von lastDayInCalendar (da in der Schleife currentDate immer erhöht wird). Der Event-Handler nimmt also den Wert von currentDate zu dem Zeitpunkt, wenn ich klicke, was ja auch irgendwie richtig ist, ich hier aber nicht möchte.
Wie kann ich dieses Problem umgehen und ähnlich wie beim Zelleninhalt dem Event-Handler einen festen Wert übergeben, der nicht später bei dem Klick erst aus currentDate gelesen wird.
Habe ich mich verständlich ausgedrückt?
Jan
Ich habe ein kleines Problem mit Javascript. Und zwar erstelle ich gerade einen einfachen DatePicker bzw. Kalender und wenn man auf ein Datum klickt, möchte ich das Datum in ein Textfeld schreiben lassen.
Damit das passiert, füge ich jedem Datum (das eine Tabellenzelle ist) einen Event-Handler hinzu.
Hier mal auszugsweise der Quellcode:
PHP-Code:
while (currentDate <= lastDayInCalendar)
{
var cellDay = document.createElement("td");
cellDay.innerHTML = currentDate.getDate();
if (window.addEventListener) {
cellDay.addEventListener('click', function(evt) {
this.select(currentDate.getDate());
}, false);
}
row.appendChild(cellDay);
currentDate.setTime(currentDate.getTime()+(1000*60*60*24));
}
Soweit funktioniert das vom Prinzip her auch. Das Problem ist nur, dass (egal welches Datum ich klicke) immer der letzte currentDate-Wert in das Feld geschrieben wird. Also ein Tag nach dem Wert von lastDayInCalendar (da in der Schleife currentDate immer erhöht wird). Der Event-Handler nimmt also den Wert von currentDate zu dem Zeitpunkt, wenn ich klicke, was ja auch irgendwie richtig ist, ich hier aber nicht möchte.
Wie kann ich dieses Problem umgehen und ähnlich wie beim Zelleninhalt dem Event-Handler einen festen Wert übergeben, der nicht später bei dem Klick erst aus currentDate gelesen wird.
Habe ich mich verständlich ausgedrückt?
Jan
Kommentar