Avatar billede tjens Nybegynder
24. oktober 2008 - 17:46 Der er 5 kommentarer og
1 løsning

appendChild af en TABLE renderer ikke i MSIE

Jeg har brug for at opbygge en table dynamisk, og ville gerne prøve at undgå brug af innerHTML.

Nedenstående eksempel viser 2 tabeller i Firefox og Opera, men kun 1 i MSIE 6 og 7.

Gør jeg noget forkert i min brug af createElement og appendChild?

Link til eksemplet: http://tjens.dk/eksperten/TestAppendTable01.html

Source:
<html>
<head>
<title>TEST: Create Table</title>
<style type="text/css">
    table, th, tr, td    {border: 2px solid blue; border-collapse: collapse;}
</style>
<script type="text/javascript">

function init() {
    var oTable = document.createElement("TABLE");
    var Row1 = document.createElement("TR");
    var Cell11 = document.createElement("TD");     Cell11.id = "TDoperationsID";
    Cell11.appendChild(document.createTextNode("Text Node in Cell 1.1") );
    Row1.appendChild(Cell11);
    var Cell12 = document.createElement("TD");     Cell12.id = "TDloginID";
    Row1.appendChild(Cell12);
    var Row2 = document.createElement("TR");
    var Cell21 = document.createElement("TD");     Cell21.id = "TDfieldsID";
    Cell21.appendChild(document.createTextNode("Text Node in Cell 2.1") );
    Row2.appendChild(Cell21);
    var Cell22 = document.createElement("TD");     Cell22.id = "TDformID";
    Cell22.appendChild(document.createTextNode("Text Node in Cell 2.2") );
    Row2.appendChild(Cell22);
    oTable.appendChild(Row1);
    oTable.appendChild(Row2);
    document.getElementById("testdiv").appendChild(oTable);
    document.getElementById("TDloginID").appendChild(document.createTextNode("Late added Text Node in TDloginID"));
    document.getElementById("testdiv").appendChild(document.createTextNode("Last Text Node in testdiv"));
    alert(document.getElementById("testdiv").innerHTML);
}
</script>
</head>
<body onload="init()">
<table>
<tr>
  <td>
    HTML-table Cell 1
  </td>
  <td>
    Cell 2
</td>
</tr>
</table>
<div id="testdiv">
    testdiv start text
</div>
</body>
</html>
Avatar billede erikjacobsen Ekspert
24. oktober 2008 - 18:11 #1
Er der ikke noget med at man skal lave en TBODY-node? Og evt THEAD.
Avatar billede tjens Nybegynder
24. oktober 2008 - 18:48 #2
Lige nøjagtig :-)

Det virker med et ekstra TBODY niveau på.

Læg et svar
Avatar billede erikjacobsen Ekspert
24. oktober 2008 - 19:14 #3
Så kan jeg alligevel huske noget ;)
Jeg samler slet ikke på point, tak. Svar blot selv, og accepter dit eget svar.
Avatar billede tjens Nybegynder
24. oktober 2008 - 20:00 #4
.
Avatar billede olebole Juniormester
25. oktober 2008 - 00:25 #5
<ole>

- og husk, at tagName argumentet i kaldet til createElement skal være lowerCase  ;o)

/mvh
</bole>
Avatar billede roenving Novice
25. oktober 2008 - 10:23 #6
-- og kigger man på f.eks. dtd'en til html4.01 ses det tydeligt, at man skal have en tbody på, men _alle_ browsere er enige om at indsætte den, hvis den mangler i HTML-koden, FireFox er så så buggy, at den også indsætter den, hvis man prøver at appende via DOM, der holder IE sig dog på dydens smalle sti ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester