Zugriff auf die dynamisch erzeugten Objekte
kati
- javascript
Hallo,
ich erzeuge dynamisch eine Tabelle. Es klappt auch. Wenn man aber einen Eintrag aus dieser Tabelle anklickt soll (und zwar per php) ein Inhalt geladen werden. Das klappt auch wunderbar. Das Problem ist, dass ich noch zusätzlich das Click-Event abfangen möchte. Das erwähnte Dokument erscheint ja nur mit Hilfe einer Referenz (also <a href=order/index.php?content=hallo>). Daher brauche ich noch in einer dynamisch erzeugten Zelle einer Tabelle das OnClick-Event integrieren. Ich habe mir überlegt, dass es sich vielleicht mit Hilfe des Event-Handling (DOM) bewerkstelligen läßt - und zwar anhand der ID kann ich die Objekte identifizieren.... Mein Browser schreit, dass das Objekt die Methode addEventListener, die dafür erforderlich ist und die Events registriert, nicht unterstützt. In eurem Beispiel http://www.netzwelt.com/selfhtml/dhtml/modelle/dom.htm (unten),
das sehr anschaulich beschrieben ist, passiert das gleiche. Kann mir jemand helfen ? Hängt es mit meinen Einstellungen zusammen ? Wird die Methode nicht erkannt ?
Vielen Dank für eure Hilfe
Kati
Hallo,
ich erzeuge dynamisch eine Tabelle. Es klappt auch. Wenn man aber einen Eintrag aus dieser Tabelle anklickt soll (und zwar per php) ein Inhalt geladen werden. Das klappt auch wunderbar. Das Problem ist, dass ich noch zusätzlich das Click-Event abfangen möchte. Das erwähnte Dokument erscheint ja nur mit Hilfe einer Referenz (also <a href=order/index.php?content=hallo>). Daher brauche ich noch in einer dynamisch erzeugten Zelle einer Tabelle das OnClick-Event integrieren. Ich habe mir überlegt, dass es sich vielleicht mit Hilfe des Event-Handling (DOM) bewerkstelligen läßt - und zwar anhand der ID kann ich die Objekte identifizieren.... Mein Browser schreit, dass das Objekt die Methode addEventListener, die dafür erforderlich ist und die Events registriert, nicht unterstützt. In eurem Beispiel http://www.netzwelt.com/selfhtml/dhtml/modelle/dom.htm (unten),
das sehr anschaulich beschrieben ist, passiert das gleiche. Kann mir jemand helfen ? Hängt es mit meinen Einstellungen zusammen ? Wird die Methode nicht erkannt ?
Vielen Dank für eure Hilfe
Kati
Hallo Kati,
warum denn so kompliziert, wenn's auch einfach geht? Mit
<a href="neueSeite.html" target=_blank onClick="alert('onClick-Event')">neue Seite</a>
kannst Du beides erreichen (zuerst wird das onClick-Ereignis ausgelöst und dann die neue Seite geladen). Anstelle von alert() mach irgendeine Funktion rein.
MfG. Lutz T.
Hallo, ich habe es mit dem OnClick ausprobiert... hmm, du hattest recht, bei dynamischer Erzeugung geht es... z.B.
funktion sowieso(x, y) {
// ******* code ********
var Referenz = document.createElement("a");
Referenz.href = "index.php?content=" + unter_eintrag[1];
Referenz.onClick = alert("hi");
// ******* code ********
}
Sorry, ich habe in der Referenz nachgeschlagen und davon steht dort kein Wort... daher habe ich gleicht gedacht, dass das html-Objekt (bei javascript!) über diese Möglichkeit nicht verfügt. Egal
Das problem ist, dass es mir so nicht viel hilft, nach dem Anklicken des Eintrages wird nämlich der Folgende Code ausgeführt - und zwar mit php wird ein Inhalt auf die Seite geladen. Also ich muss nach dem include die javascript Methode "sowieso()" nochmals ausführen. Also die Argumente x, y muss ich mir in globalen Variablen speichern, damit sie auch innerhalb des php-Scriptes sichtbar sind und nochmals die Methode ausführen. Kannst du mir sagen, wie es geht ? Es mag sicher eine triaviale Frage sein, ich habe vor ein paar Tagen mit Javascript angefangen und daher weiß ich diese Dinge nicht. Googeln hat bis jetzt auch net viel geholfen. ;-) Danke.
Da php Code:
<?php
//da prüfe ich beim ersten Laden, damit ich titelseite anzeigen kann
if(!$_GET['content']) {
include("titel.php");
} else {
//wenn aber die Inhaltseite existiert, will ich sie da haben
if($_GET['content']) {
if (!is_file($_GET['content'].".php")) {
echo 'Die Datei existiert noch nicht. Der Inhalt kommt später.';
} else {
if(!include ($_GET['content']. ".php")) {
echo 'fehler beim Laden des Dokumentes';
}
}
}
}
?>
Cu kati
Hallo Kati,
Anstatt nach dem Laden der php-Datei die HTML-Elemente dnamisch zu erzeugen, würde ich die Elemente gleich im php in die Seite reinschreiben. Dazu muß das php allerdings wissen, welche Elemente das sind, d.h. Du mußt der Seite beim Aufruf die zu erzeugenden Elemente als Parameter mitgeben und das dann auswerten, also z.B. so
Referenz.href = "index.php?content=" + unter_eintrag[1]+"&x="+x+"&y="+y;
Du kannst natürlich auch in einem JavaScript-Bereich am Ende der php-Datei die JavaScript-Funktion aufrufen, die mittels der Parameter x und y die HTML-Elemente dynamisch erzeugt, also ungefähr so:
echo '<script Language="JavaScript">sowiewo('+$_GET['x']+','+$_GET['y']+')</script>'
(Ich weiß nicht, ob die php-Syntax so in Ordnung ist, davon hab ich keine Ahnung.)
MfG. Lutz T.
hi,
ja so habe ich es gemacht (innerhalb des php-Scriptes), genau an der stelle, wo sich <script type="javascr... befindet bekomme ich einen Syntaxfehler... php will einfach mit javascript nichts zu tun haben :-(
danke
cu kati
Hallo Kati,
Anstatt nach dem Laden der php-Datei die HTML-Elemente dnamisch zu erzeugen, würde ich die Elemente gleich im php in die Seite reinschreiben. Dazu muß das php allerdings wissen, welche Elemente das sind, d.h. Du mußt der Seite beim Aufruf die zu erzeugenden Elemente als Parameter mitgeben und das dann auswerten, also z.B. so
Referenz.href = "index.php?content=" + unter_eintrag[1]+"&x="+x+"&y="+y;
Du kannst natürlich auch in einem JavaScript-Bereich am Ende der php-Datei die JavaScript-Funktion aufrufen, die mittels der Parameter x und y die HTML-Elemente dynamisch erzeugt, also ungefähr so:
echo '<script Language="JavaScript">sowiewo('+$_GET['x']+','+$_GET['y']+')</script>'
(Ich weiß nicht, ob die php-Syntax so in Ordnung ist, davon hab ich keine Ahnung.)
MfG. Lutz T.
hi,
ja so habe ich es gemacht (innerhalb des php-Scriptes), genau an der stelle, wo sich <script type="javascr... befindet bekomme ich einen Syntaxfehler... php will einfach mit javascript nichts zu tun haben :-(
danke
cu kati
Hallo nochmal,
das ist jetzt eigentlich ein php-Problem, wovon ich keine Ahnung habe, aber bei ASP ist es manchmal auch so, da gibt es einen Trick, nämlich '<'+'script language="JavaScript">' anstelle von '<script language="JavaScript">' verwenden, und '<'+'/script>' anstelle von '</script>' verwenden, vielleicht klappt's ja.
Man kann das <script language="JavaScript"> und </script> auch in
die HTML-Seite als Text schreiben (ohne php) den nur den dazwischenliegenden Funktionsaufruf mittles php reinschreiben, das müßte eigentlich gehn.
MfG. Lutz T.
hallo und danke...
innerhalb des php-Scriptes behandelt man javascripte ein bisschen anders... ich habe es also schon hingekriegt.
cu und danke
kati
hi,
ja so habe ich es gemacht (innerhalb des php-Scriptes), genau an der stelle, wo sich <script type="javascr... befindet bekomme ich einen Syntaxfehler... php will einfach mit javascript nichts zu tun haben :-(
danke
cu kati
Hallo nochmal,
das ist jetzt eigentlich ein php-Problem, wovon ich keine Ahnung habe, aber bei ASP ist es manchmal auch so, da gibt es einen Trick, nämlich '<'+'script language="JavaScript">' anstelle von '<script language="JavaScript">' verwenden, und '<'+'/script>' anstelle von '</script>' verwenden, vielleicht klappt's ja.
Man kann das <script language="JavaScript"> und </script> auch in
die HTML-Seite als Text schreiben (ohne php) den nur den dazwischenliegenden Funktionsaufruf mittles php reinschreiben, das müßte eigentlich gehn.
MfG. Lutz T.