views:

273

answers:

2

In my current application i need to copy the content of one table into another... With setting innerHTML it works perfectly in FF... but not in IE8... Here is the Code i used to copy in FF:

getID("tableA").innerHTML = getID("tableB").innerHTML;
// getID is a custom function i wrote to provide a shorter version of document.getElementById();

TableA is empty (only the tbody tag exists). TableB is looking like this:


table
  tbody
    tr
      td "Content" /td
      td "Content" /td
    /tr
  /tbody
/table

I already tried using nodeValue.. or appendData... or outerHTML.. but nothing really worked...

+5  A: 

Internet Explorer doesn't let you edit the inside of tables with innerHTML - it is all or nothing.

Since you are trying to use innerHTML to copy the information, a complete copy should be safe (i.e. not have any id attributes that might become duplicated), in which case I would do this:

var source = document.getElementById('tableA');
var destination = document.getElementById('tableB');
var copy = source.cloneNode(true);
copy.setAttribute('id', 'tableB');
destination.parentNode.replaceChild(copy, destination);
David Dorward
worked perfectly^^ thanks!!
Gushiken
Nice Share. Can anyone comment if this is a means that would work in FF/Safari/Chrome etc?
MikeJ
Oops. I meant method that would work more universally?
MikeJ
Yes, it is bog standard DOM 1.
David Dorward
A: 

I'm kind of surprised to learn this didn't get fixed for IE 8. Geez, talk about dragging your feet. This is an intentional omission in Internet Explorer's implementation of innerHTML — you can't set innerHTML in a table. The creator of the feature has offered an explanation and a workaround. Basically, you can get hold of an actual tbody node and use replaceChild() to turn the original table's tbody into that.

Chuck