Скопируйте содержимое одной таблицы в другую - PullRequest
3 голосов
/ 21 апреля 2009

В моем текущем приложении мне нужно скопировать содержимое одной таблицы в другую ... С настройкой 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();

Таблица A пуста (существует только тег tbody). Таблица B выглядит следующим образом:


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

Я уже пытался использовать nodeValue .. или appendData ... или outerHTML ... но ничего не получалось ...

Ответы [ 2 ]

7 голосов
/ 21 апреля 2009

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);
0 голосов
/ 21 апреля 2009

Я немного удивлен, узнав, что это не исправлено в IE 8. Черт, поговорим о том, как тянуть ноги. Это преднамеренное упущение в реализации innerHTML в Internet Explorer - вы не можете установить innerHTML в таблице. Создатель функции предложил объяснение и обходной путь . По сути, вы можете получить фактический узел tbody и использовать replaceChild (), чтобы превратить tbody оригинальной таблицы в него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...