JavaScript: Zeile in Tabelle einfügen
Hallo Community,
nach 11 Jahren Programmiererfahrung in JS kriege ich hier die Motten !!!
Folgender Fall :
ich habe eine vom Server generierte HTML-Tabelle mit einer unbekannten Anzahl von Zeilen.
In diese Tabelle möchte ich nun mit JS/DOM an 1 bis n Stellen eine neue Zeile mit Text einfügen.
<tr><td colspan=8 style="font-size:12pt;color:blue">'+neuername+'</td></tr>'
Die Tabelle verfügt über keine Zeilen- oder Zellen-IDs, allerdings kenne ich die Zeilennummer, an der eingefügt werden soll.
Es ist völlig unproblematisch, das TR als Objekt zu ermitteln, VOR dem ich einfügen will.
Jetzt mein Problem:
jedwede Form des Einfügens scheitert - entweder meldet der Browser (IE 6) einen Laufzeitfehler, das die Anwendung auf das Objekt nicht zulässig ist, oder irgendeine andere Fehlermeldung.
Versucht habe ich es mit :
- createElement
- insertAdjacentHTML
- outerHTML
Nichts funktioniert, wobei ich vor allem nicht verstehe, warum AdjacentHtml nicht funktioniert.
Kann man keine kompletten Zeilen in eine Tabelle einfügen ?????
Wer kann helfen ?! Danke schon einmal jetzt für ein Feedback
Stephan
Antwort schreiben
Antwort 1 von rfb vom 27.03.2019, 11:56 Options
Wenn du table mal nach seinen childNodes befragst wirst du dort tbody finden.
Darein setze die neue Zeile, nicht direkt in table.
function tbodytest() {
var t=document.getElementsByTagName("table");
if (t.length>0) {
var tb=t[0].getElementsByTagName("tbody");
for (var i=0;i<tb.length;i++) {
alert(tb[i].nodeName);
}}
}
hieraus kannst du erkennen, wie du den tbody erhältst,
auch bei Tabellen, bei denen er im HTML überhaupt nicht vorkommt! Statt es mit alert..auszugeben müsstest du tb dann ein enues Kind unterschieben
Antwort 2 von rfb vom 27.03.2019, 11:58 Options
ach das Supportnet! hier nochmal:
function test() {
var t=document.getElementsByTagName("table");
if (t.length>0) {
var tb=t[0].getElementsByTagName("tbody");
for (var x=0;x<tb.length;x++) {
alert(tb[x].nodeName);
}}
}
Antwort 3 von c.i.b.magic vom 27.03.2019, 12:33 Options
Hallo rfb,
danke schon einmal für deine Antwort.
die Logik, auf tbody zuzugreifen habe ich verstanden.
Tatsächlich gibt es im Code kein solches TAG, aber du hast ja geschrieben, dies sei nicht relevant.
Leider gibt dein Testcode aber trotzdem ein "undefined" zurück, und ein programmatischer Zugriff auf diesen Node liefert mal wieder das beliebte "Object is Null or undefined"
Antwort 4 von rfb vom 27.03.2019, 13:15 Options
Zitat:
Leider gibt dein Testcode aber trotzdem ein "undefined" zurück
der
aus meinem 2ten Posting (beim ersten hat die Supportnetsoftware was verschluckt)?
Getestet auf FF2, Opera9 und IE6 -> funktioniert bei mir.
Antwort 5 von c.i.b.magic vom 27.03.2019, 13:57 Options
@rfb
DAAAANKE !!!
Man hält es kaum für möglich, wie lange man an einem so blöden Problem hängen bleiben kann.
Jetzt läuft's so, wie ich es wünsche.
Noch einmal vielen Dank für deine Hilfe !
Stephan