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, 10: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, 11: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, 13: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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:50 Uhr.