![]() |
Internet Explorer won't append table rows using appendChild
I have tried the code which Vlaad has resolved saying that tbody tag to tr resolved it but I am still facing this issue on IE , hear the code
var tbody = document.createElement('tbody'); var link = document.createElement('a'); var span = document.createElement('span'); var txt = "EPSON GPS Receiver Module S4E398600010000"; var image = document.createElement('img'); var tr = document.createElement('tr'); var td = document.createElement('td'); link.setAttribute('href','#1'); span.setAttribute('class','editorialQuickLinkTitle'); link.innerHTML = txt; span.appendChild(link); image.setAttribute('src','/Images/Logos/Miniatures/epson.png'); image.setAttribute('border','0'); image.setAttribute('vspace','5'); image.setAttribute('hspace','5'); td.setAttribute('class','block'); td.appendChild(span); td.appendChild(document.createElement('br')); td.appendChild(image); tr.appendChild(td); tbody.appendChild(tr); document.getElementById("previews").appendChild(tbody); Please let me know what went wrong... Thanks, in advance..... |
Assuming "previews" is your table, it would be something like this -
(unwanted code has been commented out) Code:
//var tbody = document.createElement('tbody'); Regards, Niral Soni |
Assuming "previews" is a div ....
Code:
the table without the table tag IE does not. |
But the recommended way to do this is *NOT* to use createElement("tr") or createElement("td")!!
Instead, you should use table.insertRow() and tr.insertCell(). Something like this: Code:
<html>Note you you do *NOT* then use appendChild, at all. |
Quote:
|
IE won't show up on this dom construction.
Thanks DaveyErwin, it worked...
So I tried the exact one on which Am try to work on.... But this fails , Can you please let me know what Exactly is wrong here ... sorry bad at JS. Code below : ************ <html> <title> test dom </title> <head> <script> function call(){ alert("call made"); } function pictureDiv(){ var mainTable = document.createElement("table"); var tbody = document.createElement("tbody"); var tr = document.createElement("tr"); var td = document.createElement("td"); td["valign"] = "bottom"; tr.appendChild(td); var picDiv = document.createElement("div"); picDiv["id"] = "x"; picDiv.style.cssText = "width:180px"; var table = document.createElement("table"); table["border"] = "1"; table["valign"] = "bottom"; table["cellpadding"] = "0"; table["cellspacing"] = "0"; table.style.cssText = "padding-bottom:10"; picDiv.appendChild(table); var tr1 = document.createElement("tr"); var td1 = document.createElement("td"); table.appendChild(tr1); tr1.appendChild(td1); var img = document.createElement("img"); img["id"] = "y"; img["src"] ="x.gif"; td1.appendChild(img); var td2 = document.createElement("td"); td2["valign"] = "bottom"; tr1.appendChild(td2); var resDiv = document.createElement("div"); resDiv["id"] = "resolutionwarning"; resDiv.style.cssText = "margin-left: 5px;"; td2.appendChild(resDiv); var atag = document.createElement("a"); atag["href"] =""; atag["onclick"] = "call()"; resDiv.appendChild(atag); var resImg = document.createElement("img"); resImg["id"] = "z"; resImg["src"] = "y.gif"; resImg["width"] = "9"; resImg["height"] = "9"; resImg["border"] = "0"; resImg["align"] = "absbottom"; resImg["alt"] = " not recommended "; atag.appendChild(resImg); var tr2 = document.createElement("tr"); var td3 = document.createElement("td"); tr2.appendChild(td3); var text = document.createTextNode('4x6'); td3.appendChild(text); picDiv.appendChild(tr2); td.appendChild(picDiv); mainTable.appendChild(tbody); tbody.appendChild(tr); document.getElementById("previews").appendChild(mainTable); } </script> </head> <body onload = "pictureDiv()"> Test page.... <div id = "previews"></div> </body> </html> ************* Thanks inAdvance. |
IE won't show up on this dom construction.
Did any one get chance to check below the code , quick revert is appreciated.
As posted earlier Code below : ************ <html> <title> test dom </title> <head> <script> function call(){ alert("call made"); } function pictureDiv(){ var mainTable = document.createElement("table"); var tbody = document.createElement("tbody"); var tr = document.createElement("tr"); var td = document.createElement("td"); td["valign"] = "bottom"; tr.appendChild(td); var picDiv = document.createElement("div"); picDiv["id"] = "x"; picDiv.style.cssText = "width:180px"; var table = document.createElement("table"); table["border"] = "1"; table["valign"] = "bottom"; table["cellpadding"] = "0"; table["cellspacing"] = "0"; table.style.cssText = "padding-bottom:10"; picDiv.appendChild(table); var tr1 = document.createElement("tr"); var td1 = document.createElement("td"); table.appendChild(tr1); tr1.appendChild(td1); var img = document.createElement("img"); img["id"] = "y"; img["src"] ="x.gif"; td1.appendChild(img); var td2 = document.createElement("td"); td2["valign"] = "bottom"; tr1.appendChild(td2); var resDiv = document.createElement("div"); resDiv["id"] = "resolutionwarning"; resDiv.style.cssText = "margin-left: 5px;"; td2.appendChild(resDiv); var atag = document.createElement("a"); atag["href"] =""; atag["onclick"] = "call()"; resDiv.appendChild(atag); var resImg = document.createElement("img"); resImg["id"] = "z"; resImg["src"] = "y.gif"; resImg["width"] = "9"; resImg["height"] = "9"; resImg["border"] = "0"; resImg["align"] = "absbottom"; resImg["alt"] = " not recommended "; atag.appendChild(resImg); var tr2 = document.createElement("tr"); var td3 = document.createElement("td"); tr2.appendChild(td3); var text = document.createTextNode('4x6'); td3.appendChild(text); picDiv.appendChild(tr2); td.appendChild(picDiv); mainTable.appendChild(tbody); tbody.appendChild(tr); document.getElementById("previews").appendChild(mainTable); } </script> </head> <body onload = "pictureDiv()"> Test page.... <div id = "previews"></div> </body> </html> ************* Thanks inAdvance.[/QUOTE] |
more like this,
you needed a tbody for the table also the onclick assignment was wrong <html> <title> test dom </title> <head> <script> function call(){ alert("cal made"); } function pictureDiv(){ var mainTable = document.createElement("table"); var tbody = document.createElement("tbody");//////////////// var tbody1 = document.createElement("tbody"); var tr = document.createElement("tr"); var td = document.createElement("td"); td["valign"] = "bottom"; tr.appendChild(td); var picDiv = document.createElement("div"); picDiv["id"] = "x"; picDiv.style.cssText = "width:180px"; var table = document.createElement("table"); table["border"] = "1"; table["valign"] = "bottom"; table["cellpadding"] = "0"; table["cellspacing"] = "0"; table.style.cssText = "padding-bottom:10"; picDiv.appendChild(table); var tr1 = document.createElement("tr"); var td1 = document.createElement("td"); table.appendChild(tbody1);///////////////////////////// tbody1.appendChild(tr1);///////////////////////////// tr1.appendChild(td1); var img = document.createElement("img"); img["id"] = "y"; img["src"] ="x.gif"; td1.appendChild(img); var td2 = document.createElement("td"); td2["valign"] = "bottom"; tr1.appendChild(td2); var resDiv = document.createElement("div"); resDiv["id"] = "resolutionwarning"; resDiv.style.cssText = "margin-left: 5px;"; td2.appendChild(resDiv); var atag = document.createElement("a"); atag["href"] =""; atag["onclick"] = call;/////////////////////////////////////// resDiv.appendChild(atag); var resImg = document.createElement("img"); resImg["id"] = "z"; resImg["src"] = "y.gif"; resImg["width"] = "9"; resImg["height"] = "9"; resImg["border"] = "0"; resImg["align"] = "absbottom"; resImg["alt"] = " not recommended "; atag.appendChild(resImg); var tr2 = document.createElement("tr"); var td3 = document.createElement("td"); tr2.appendChild(td3); var text = document.createTextNode('4x6'); td3.appendChild(text); picDiv.appendChild(tr2); td.appendChild(picDiv); mainTable.appendChild(tbody); tbody.appendChild(tr); document.getElementById("previews").appendChild(mainTable); } </script> </head> <bodyonload="pictureDiv()"> Test page.... <divid="previews"></div> </body> </html> |
IE won't show up on this dom construction.
Thanks for the effort and help DaveyErwin,
I tried a lot and came to solution already, I can just tell all who ever constructs table in dom, must make sure , you use the tbody /thead tag to append tr element else it wont work on IE and would show none on IE not even any error. Where as FF and other browsers are happy to show with out any issue. Thanks alot. Quote:
|
this works for me ?
Code:
|
Depends on version of IE. Yes, IE7 (and I think IE8) require that you append to the <tbody>.
But you know, if you would JUST LISTEN to Felgall and me you would learn that using createElement() and appendChild() for <tr> and <td> are *NOT RECOMMENDED*!!!! Using insertRow() and insertCell() will: (a) Be easier to code. (b) Work in all browsers (yes, without needed to use the <tbody>). (c) Execute just a bit faster. WHY would you WANT to continue to use appendChild() for <tr> and <td>???? |
IE won't append table rows using appendChild
Thanks Old Pedant, sure would next, hopefully new questions for you then;), new to JS .... so learning take bit time....
Quote:
|
Quote:
Of course you need to be creating a million tables for the speed difference to be measurable in fractions of a second so the ease of maintaining the code using insertRow and insertCell ought to be the main reason for using them with the fact that they are faster in all but one browser being a bonus. |
| All times are GMT +1. The time now is 05:59 AM. |
Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.