php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 03-12-2008, 11:02
razer2k
 Newbie
Links : Onlinestatus : razer2k ist offline
Registriert seit: Sep 2003
Beiträge: 50
razer2k ist zur Zeit noch ein unbeschriebenes Blatt
Standard Event Listener in Schleife hinzfügen

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:

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));

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
Mit Zitat antworten
  #2 (permalink)  
Alt 03-12-2008, 12:37
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
if (window.addEventListener) {
    
cellDay.addEventListener('click', function(evt) { 
        
this.select(currentDate.getDate());
    }, 
false);

currentDate ist an dieser Stelle eine Referenz, d.h. wird auch durch deine Änderungen geändert. Umgehen kannst du das, wenn du diese Funktion in einer anderen Funktion erzeugst, d.h. mit einer lokalen Variable arbeitest. Vielleicht kannst du auch mit dieser clone-Funktion was machen.
Mit Zitat antworten
  #3 (permalink)  
Alt 03-12-2008, 14:19
razer2k
 Newbie
Links : Onlinestatus : razer2k ist offline
Registriert seit: Sep 2003
Beiträge: 50
razer2k ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey!

Danke für die Antwort, aber clone wollte ich lieber vermeiden.
Ich hab das Problem jetzt auf eine ähnliche Art gelöst.

Und zwar erzeuge ich jede Zelle der Tabelle in einer eigenen Funktion, diese Funktion bekommt übergeben: Datum in Millisekunden, Zelleninhalt, CSS-Klasse, etc.
Innerhalb der Funktion mache ich einfach ein neues Date Objekt (da ich ja die Sekunden eh habe), baue mir alles zusammen, inkl. Event Listener und gebe das Element zurück, das ich nun einfach mit appendChild() an die Tabelle anhänge.

Das ganze funktioniert aber halt nur, wenn ich ein neues Date Objekt innerhalb der Funktion erstellen. Übergebe ich das Date Objekt selbst und verwende es in der Funktion, kappt es wieder mal nicht, da es anscheinend als Referenz übergeben wird.

Grüße,
Jan
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
PG Job Site Pro

> Job Site Pro - web-basiertes Programm, auf PHP/MySQL für Erstellung der funktionellen Job Board Site gebaut. Das hat erweitertes Management-System für Arbeitssuchenden und Arbeitgeber und kann für bestimmte Länder, Regionen oder einfach generelle Job Si

05.02.2019 submit@ | Kategorie: PHP/ Management
ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:26 Uhr.