3

在我当前的应用程序中,我需要将一个表的内容复制到另一个表中......通过设置 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.. 但没有任何效果...

4

2 回答 2

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);
于 2009-04-21T08:42:12.963 回答
0

得知 IE 8 并没有解决这个问题,我有点惊讶。天哪,谈论拖你的脚。这是 Internet Explorer 的 innerHTML 实现中的故意遗漏——您不能在表格中设置 innerHTML。该功能的创建者提供了解释和解决方法。基本上,您可以获得一个实际的 tbody 节点并使用 replaceChild() 将原始表的 tbody 转换为该节点。

于 2009-04-21T08:45:53.033 回答