Akela: onclick in dynamischen TD

Hallo,

dieser sch... ie macht mich wild.

Ich habe eine Tabelle dynamisch über DOM-scripting erstellt. Davon sind mehrere TDs mit einem onclick belegt. Das funktioniert auch toll im FF, nicht aber im IE.

Innerhalb des IE kann ich mir den generierten Kode anzeigen lassen. Wenn ich diesen Code direkt in die Page einbaue geht es auch im IE.

Warum funktioniert der dynamische Kode nicht ?

Zusatz: div_obj ist ein DIV. Die Tabelle wird dort auch angezeigt.

---%<-------
      // Tabelle erzeugen und anhaengen
      tbl_obj = document.createElement('table');
      div_obj.appendChild(tbl_obj);

// Zeile 1 einfuegen
      var tr_obj = tbl_obj.insertRow(0);

for ( var idx=0; idx<3; idx++ )
          {
            // Zelle erzeugen und einfuegen
            var td_obj = document.createElement("td");
            tr_obj.appendChild( td_obj );
            // Text-Node fuer die Zelle erzeugen und einfuegen
            var text_node = document.createTextNode( 'Hugo' + idx );
            td_obj.appendChild( text_node );
            td_obj.onclick = "alert('Hugo');";

// In TR einhaengen
            tr_obj.appendChild(td_obj);
          }
---%<-------

ciao Akela

  1. Hallo,

    der IE hat gern ein http://de.selfhtml.org/html/tabellen/aufbau.htm#kopf_koerper_fuss@title=tbody

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. Hallo plan_B,

      habe jetzt folgenden, erfolgslosen Code.
      Auch mit TBODY keine Änderung.

      -----%<--------
            // Tabelle erzeugen und anhaengen
            tbl_obj = document.createElement('table');
            div_obj.appendChild(tbl_obj);

      // TBODY -> IE-Extrawurst
            tbody = document.createElement('tbody');
            tbl_obj.appendChild( tbody );

      // Zeile 1 einfuegen
            var tr_obj = tbody.insertRow(0);

      for ( var idx=0; idx<3; idx++ )
                {
                  // Zelle erzeugen und einfuegen
                  var td_obj = document.createElement("td");
                  tr_obj.appendChild( td_obj );
                  // Text-Node fuer die Zelle erzeugen und einfuegen
                  var text_node = document.createTextNode( 'Hugo' + idx );
                  td_obj.appendChild( text_node );
                  td_obj.onclick = "alert('Hugo');";

      }
            // In TR einhaengen
            tr_obj.appendChild(td_obj);
      -----%<--------

      ciao Akela

      1. Hallo,

        var text_node = document.createTextNode( 'Hugo' + idx );
                    td_obj.appendChild( text_node );
                    td_obj.onclick = "alert('Hugo');";

        onclick erwartet ein Referenz auf eine Funktion aber keinen String

        hier die Schreibweise als anonyme Funktion

          
                    td_obj.appendChild( text_node );  
                    td_obj.onclick = function(){alert('Hugo');};  
        
        

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·
        1. Hallo plan_B,

          genau so ist es :-)

          Ich hatte vorher mal
            td_obj.onclick = alert('Hugo');
          probiert, was natürlich in die Hose ging.
          Man soll einfach mal eine Stunde Pause, wenn man die Lösung nicht findet.

          Danke.

          ciao Akela