将一个表的内容复制到另一个表中

时间:2009-04-21 08:16:07

标签: javascript html internet-explorer-8

在我目前的应用程序中,我需要将一个表的内容复制到另一个表中...通过设置innerHTML,它在FF中完美运行......但不是在IE8中... 这是我用来复制FF的代码:

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

TableA为空(仅存在tbody标记)。 TableB看起来像这样:


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

我已经尝试过使用nodeValue ..或者appendData ...或outerHTML ..但是没有真正有效的...

2 个答案:

答案 0 :(得分:7)

Internet Explorer不允许您使用innerHTML编辑表格内部 - 它是全部或全部。

由于您尝试使用innerHTML来复制信息,因此完整副本应该是安全的(即没有任何可能重复的id属性),在这种情况下我会这样做:

var source = document.getElementById('tableA');
var destination = document.getElementById('tableB');
var copy = source.cloneNode(true);
copy.setAttribute('id', 'tableB');
destination.parentNode.replaceChild(copy, destination);

答案 1 :(得分:0)

我很惊讶地发现IE 8没有得到修复.Geez,谈论拖你的脚。这是Internet Explorer的innerHTML实现中的故意遗漏 - 您无法在表中设置innerHTML。该功能的创建者提供了an explanation and a workaround。基本上,您可以获取实际的tbody节点并使用replaceChild()将原始表的tbody转换为该节点。