online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon c.i.b.magic vom 27.03.2019, 11:23 Options

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

Ähnliche Themen

Formel-Bezug
Platin7  02.05.2007 - 103 Hits - 2 Antworten

Makro: Zeile einfügen
10Deluxe  19.06.2007 - 110 Hits - 7 Antworten

Excel Reihe
smea  13.09.2007 - 40 Hits - 1 Antwort

Vergleichen von Listewerten, wie wird´s gemacht?
Excelgimp  16.06.2008 - 147 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026