Dynamischer Aufbau einer Tabelle funktioniert im IE nicht

Thomas D

Erfahrenes Mitglied
Hallo!

Ich bin jetzt von einem Kunden darauf hingewiesen, dass ein Teil meiner Page im IE nicht funktionieren würde. Ich habe diesen Bereich sowohl mit Opera, als auch mit dem Firefox getestet und leider hat der Kunde recht behalten :(. Nach mehrmaligen Durchschauen fällt mir partout kein Fehler ein, warum das dynamische Erstellen einer Tabelle im IE im Gegensatz zu den anderen beiden Browsern nicht funktioniert. Da habe ich mir gedacht, vielleicht hat jemand hier schon Erfahrung bei diesem Problem (Dynamischer Tabellenaufbau funktioniert nur im Firefox/Opera und nicht im IE) und kann mir vielleicht helfen.

Code:
function userliste (beginn)
{
	var div = document.getElementById("userCont");
	var tr, td, c, anchor, select, key, option, input;
	
	contentLoeschen (div);
	
	var table = document.createElement ("table");
	table.border = true;
	tr = document.createElement ("thead");
	var optionArr = new Array ("Benutzername", "Status", "Name", "Wohnort", "Aktion");
	
	for (c=0; c<optionArr.length; c++)
	{
		td = document.createElement ("th");
		td.appendChild (document.createTextNode (optionArr[ c]));
		tr.appendChild (td);
	}
	table.appendChild (tr);
	
	optionarr = new Array ();
	optionarr[0] = new Object ();
	optionarr[0]["k"] = "Künstler";
	optionarr[0]["g"] = "Gast";
	optionarr[0]["l"] = "Gesperrt";
	optionarr[0]["a"] = "Admin";
	
	for (c=beginn; c<(beginn + maxlines) && c<userArr.length; c++)
	{
		tr = document.createElement ("tr");
		td = document.createElement ("td");
		anchor = document.createElement ("a");
		anchor.href = "index.php?content=showUser&username=" +userArr[ c]["username"];
		anchor.appendChild (document.createTextNode (userArr[ c]["username"]));
		td.appendChild (anchor);
		tr.appendChild (td);
		
		td = document.createElement ("td");
		select = document.createElement ("select");
		select.id = userArr[ c]["username"];
		
		for (key in optionarr[0])
		{
			option = document.createElement ("option");
			option.value = key;

			if (userArr[ c]["status"] == key)
				option.selected = true;

			option.appendChild (document.createTextNode (optionarr[0][key]));
			select.appendChild (option);
		}
		td.appendChild (select);
		tr.appendChild (td);
		
		td = document.createElement ("td");
		td.appendChild (document.createTextNode (userArr[ c]["name"]));
		tr.appendChild (td);
		
		td = document.createElement ("td");
		td.appendChild (document.createTextNode (userArr[ c]["wohnort"]));
		tr.appendChild (td);
		
		td = document.createElement ("td");
		anchor = document.createElement ("a");
		anchor.href = "javascript: statusAendern ('" +userArr[ c]["username"] +"');";
		input = document.createElement ("input");
		input.type = "button";

		input.value = "Status ändern";
		anchor.appendChild (input);
		td.appendChild (anchor);
		tr.appendChild (td);
		
		table.appendChild (tr);
	}
	div.appendChild (table);
}

userArr wurde korrekt dynamisch per PHP erstellt. Also daran kann's nicht liegen. Bin für jeden Hinweis dankbar :)!

MfG, Thomas D.
 
So, habe mir das ganze jetzt genauer angeschaut: Die Tabellenstruktur wird perfekt vom IE umgesetzt - d.h. wenn ich nach beispielsweise alert(div.firstChild.firstChild.nodeName); eingebe, dann kommt korrekterweise "THEAD" raus. Von dem her liegt's also nur daran, dass der IE das ganze nicht anzeigt (die anderen beiden Browser tun's aber sehr wohl). Ist dieses Problem zufälligerweise jemandem hier bekannt?

EDIT: Bin jetzt, nachdem ich's mit einem alten Script von mir verglichen habe, selbst auf den Fehler draufgekommen. Der IE verlangt im Gegensatz zu Firefox/Opera, dass eine dynamisch erzeugte Tabelle nur dann angezeigt wird, wenn das korrekte "Standardformat" verwendet wird:

Code:
<table>
    <thead>
        <tr><th></th></tr>
    </thead>
    <tbody>
        <tr><th></th></tr>
        ...
    </tbody>
</table>


Da ich das <tbody> vergessen habe, wurde die Tabelle im Microsoft-Browser nicht angezeigt. Ein Fehler, auf den man auch mal erst drauf kommen muss ;) ...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück