onclick in dynamischen TD
Akela
- javascript
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
Hallo,
der IE hat gern ein http://de.selfhtml.org/html/tabellen/aufbau.htm#kopf_koerper_fuss@title=tbody
Gruß plan_B
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
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
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