Problem mit IE und appendChild()
Mike
- javascript
Ich verstehe nicht wieseo der IE das letzete appendChild nicht ausführt.
Hier mal ein kurzes TestScript:
--------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenannt</title>
<script language="JavaScript" type="text/javascript">
<!--
function testIt() {
var tab1 = document.createElement('TABLE');
tab1.setAttribute("bgcolor","#ccff99");
tab1.setAttribute("width","200px");
tab1.setAttribute("height","200px");
tab1.setAttribute("border","1px");
var tr1 = document.createElement('TR');
var td1 = document.createElement('TD');
var a1 = document.createElement('A');
a1.setAttribute("href","#");
a1.setAttribute("target","self");
var txt1 =document.createTextNode('Text des Links');
a1.appendChild(txt1);
td1.appendChild(a1);
tr1.appendChild(td1);
tab1.appendChild(td1);
document.documentElement.appendChild(tab1);
}
//-->
</script>
</head>
<body>
<br /><br /><br /><br />
<a href="#" onclick="testIt();">Testen</a><br />
</body>
</html>
--------------------------------------------------------------------
Im Mozilla geht es.
Wenn man im IE mit innerHTML tab1 aus gibt, so ist der Inhalt korrekt, er macht also die appends alle korrekt. Und er zeigt auch keinen JS Fehler an. hab es auch mit den Varianten
document.body.appendChild(tab1);
document.appendChild(tab1);
versucht, aber er will mir die Tabelle nicht zeigen.
Ist das Objekt bereits in der Seite vorhanden und man will es woanders anhängen, so soll es verschwinden und an der der neuen Pos auftauchen. Bei meinem Test verschwand auch ein vorhandenes Objekt nur es erschien nicht an der neuen Pos, der IE scheint also das append zu verstehen.
Kann mir jemand meinen Fehler sagen.
Mike
Hi,
versuch mal, ein <div> element in den <body> einzubauen, und dahinein, die Tabelle einzufügen.
Ungefähr so:
...
<script language="JavaScript" type="text/javascript">
<!--
...
document.getElementById("content").appendChild(tab1);
...
-->
</script>
<body>
<div id="content">
</div>
</body>
Vielleicht klappt dass
Gruzz
marcobk
Hallo marcobk,
nee, genau das selbe.
IE nein, Mozi ja.
Also ich verstehe das nicht.
Mike
hi mike,
Also ich verstehe das nicht.
...ich auch nicht.
Probier mal das:
erstell schon von vornerein im <body> ein Tabelle mit ein paar Zeilen u. Spalten und ersetze sie dann durch deine neue. Oder erstell deine Tabelle schon in HTML und füg nur die Inhalte ein.
Ich programmier grad ähnlichen Code aber sowas ist mir noch nicht untergekommen :o)
marcobk
Hi Mike,
a1.appendChild(txt1);
td1.appendChild(a1);
tr1.appendChild(td1);
tab1.appendChild(td1);
--> ich weis ja nicht ob du nicht lieber das TableRow-Element (tr1) da anbinden wolltest, ich glaube nämlich (bin mir dabei allerdings nicht sicher), dass man ein so erzeugtes Element nicht zweimal irgendwo einhängen kann
document.documentElement.appendChild(tab1);
--> meiner Meinung nach ist das documentElement das <html>-Element und nicht das body Element.
Im Mozilla geht es.
Wenn man im IE mit innerHTML tab1 aus gibt, so ist der Inhalt korrekt, er macht also die appends alle korrekt. Und er zeigt auch keinen JS Fehler an. hab es auch mit den Varianten
document.body.appendChild(tab1);
document.appendChild(tab1);
--> besser wäre da wahrscheinlich document.getElementsByTagName("body")[0].appendChild(tab1);
versucht, aber er will mir die Tabelle nicht zeigen.
Ist das Objekt bereits in der Seite vorhanden und man will es woanders anhängen, so soll es verschwinden und an der der neuen Pos auftauchen. Bei meinem Test verschwand auch ein vorhandenes Objekt nur es erschien nicht an der neuen Pos, der IE scheint also das append zu verstehen.
Kann mir jemand meinen Fehler sagen.
Mike
gruß karo
HI!
hab vor kurzem das gleiche problem geposted.
die lösung ist :
du mußt einen <TBODY> verwenden.
---------------
<table>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
--------------
GREETINGS
-kanu