[DOM] - Einfügen von Zeilen in Tabelle - IE-Problem

CFranke

Grünschnabel
Hallihallo,

Ich hätte da mal ein Problem ;)

Also, ich habe folgende Tabelle in einem HTML (bzw. php)-Dokument stehen:
Code:
<table id="formTable">
	<tr>
		<th></th>
		<th></th>
	</tr>
</table>

In diese Tabelle versuche ich mit JavaScript Zeilen einzufügen, indem ich das DOM benutze:
Code:
// Zeilen und Spalten-Anzahl
var rowNr = 6;;
var colNr = 2;

// Zugriff auf Tabelle im Dokument
var formTable=document.getElementById("formTable");

// Erstellen der neuen Zeilen
for (var i=0; i<rowNr; i++) {
	var newRow = document.createElement("tr");
        // Erstellen der neuen Spalten
	for (var j=0; j<colNr; j++) {
		var newCell = document.createElement("td");
                newCell.innerHTML = "TEST";
		newRow.appendChild(newCell);
	}
	table.appendChild(newRow);
}

Im Firefox funktioniert das tadellos. Im IE leider nicht.
Ich verstehe allerdings nicht, warum, denn wenn ich Testausgaben mache (z.B. mal mit alert die Zeilenanzahl ausgebe), kommen auch im IE die richtigen Zahlen raus. Nur ist am Ende keine Tabelle zu sehen.

Ich hatte das zuvor mit insertRow (oder so ähnlich) gelöst, aber dann konnte ich nicht nachprüfen, ob etwas zu der Tabelle hinzugefügt wurde, weil diese insertRow-Methode keine Kindknoten erzeugt hat, sprich: Die neuen Zeilen wurden nicht als nodes erkannt.

Vielleicht weiß ja hier jemand Rat ;-)

Beste Grüße,
Christian
 
Hi,

dem table-Element ist im DOM das tbody-Element untergeordnet und muss für den IE angegeben werden.

Versuch mal folgendes:
Code:
var formTable=document.getElementById("formTable").getElementsByTagName("tbody")[0];

Ausserdem hast du weiter unten
Code:
table.appendChild(newRow);
stehen.
Korrekt müsste es folgendermassen heissen:
Code:
formTable.appendChild(newRow);
Ciao
Quaese
 
Quaese hat gesagt.:
Hi,

dem table-Element ist im DOM das tbody-Element untergeordnet und muss für den IE angegeben werden.

Versuch mal folgendes:
Code:
var formTable=document.getElementById("formTable").getElementsByTagName("tbody")[0];
Super. Genau das war's. Tausend Dank :)

Das mit dem "table" statt "formTable" war nur ein Copy-Paste Fehler.
 

Neue Beiträge

Zurück