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

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:21 Uhr.