kati: Zugriff auf die dynamisch erzeugten Objekte

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

  1. 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.

    1. 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

      1. 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.

        1. 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.

          1. 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.

            1. 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.