IE zeigt per DOM generierte Tabelle nicht an
afitcs
- browser
Moin Moin!
Ich erzeuge per DOM auf Anforderung (Klick) unter anderem eine Tabelle, die in ein DIV eingefügt wird. Firefox und Opera machen das, was ich will. MSIE 6.0.2800.1106 (andere Version habe ich gerade nicht greifbar) zeigt die Tabelle nicht an, wohl aber die beiden ebenfalls per DOM angelegten Paragraphs vor und hinter der Tabelle. Die Tabelle ist aber im DOM-Baum vorhanden, wie man am alert(innerHTML) sehen kann. Firefox meldet weder Fehler noch Warnungen, ebenso wenig Opera oder IE.
Ich habe meinen Code auf das folgende Beispiel abgemagert. Ein Klick auf "Tabelle einfügen" fügt P, TABLE, P in das DIV ein. Ein Klick auf "HTML" zeigt innerHTML des Body-Tags an, nach dem Einfügen der Tabelle auch diese.
IE zeigt nur die beiden Paragraphs "oberhalb" und "unterhalb", Opera und Firefox zeigen auch die Tabellenzellen "links" und "rechts".
Was übersehe ich hier?
Alexander
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>warum?</title>
<script type="text/javascript">
function tabelleEinfuegen()
{
var div=document.getElementById('xxx');
var table,tr,td,p;
p=document.createElement('p');
p.appendChild(document.createTextNode('oberhalb'));
div.appendChild(p);
table=document.createElement('table');
div.appendChild(table);
table.border=1;
tr=document.createElement('tr');
table.appendChild(tr);
td=document.createElement('td');
tr.appendChild(td);
td.appendChild(document.createTextNode('links'));
td=document.createElement('td');
tr.appendChild(td);
td.appendChild(document.createTextNode('rechts'));
p=document.createElement('p');
p.appendChild(document.createTextNode('unterhalb'));
div.appendChild(p);
}
</script>
</head>
<body>
<p>
<a href="#" onclick="return tabelleEinfuegen()">Tabelle einfügen</a>
<a href="#" onclick="alert(document.getElementsByTagName('body')[0].innerHTML); return false;">HTML</a>
</p>
<div id="xxx"></div>
</body>
</html>
Hallo afitcs.
Ich erzeuge per DOM auf Anforderung (Klick) unter anderem eine Tabelle, die in ein DIV eingefügt wird. Firefox und Opera machen das, was ich will. MSIE 6.0.2800.1106 (andere Version habe ich gerade nicht greifbar) zeigt die Tabelle nicht an, […]
Du bist auf den üblichen Fehler gestoßen, bei dem im IE Tabellenzeilen nicht direkt in die Tabelle eingehängt werden dürfen, sondern ein Umweg über ihr tbody-Element erforderlich ist.
tr=document.createElement('tr');
table.appendChild(tr);
Bevor du hier also „tr“ einhängst, musst du noch ein tbody-Element erstellen und in „table“ einhängen.
Oder du ersparst dir gleich diese ganze Arbeit und verwendest einfach die DOM-Methoden [insertRow](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-39872903) und [insertCell](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-68927016). Hierbei erzeugt insertRow automatisch ein tbody-Element.
Einen schönen Sonntag noch.
Gruß, Mathias
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules
Du bist auf den üblichen Fehler gestoßen, bei dem im IE Tabellenzeilen nicht direkt in die Tabelle eingehängt werden dürfen, sondern ein Umweg über ihr tbody-Element erforderlich ist.
tr=document.createElement('tr');
table.appendChild(tr);
>
> Bevor du hier also „tr“ einhängst, musst du noch ein tbody-Element erstellen und in „table“ einhängen.
Danke, das war's!
Alexander