JavaScript заменить ребенка? - PullRequest
       13

JavaScript заменить ребенка?

0 голосов
/ 06 февраля 2011

У меня есть таблица в HTML с несколькими строками.

Первоначально я присвоил некоторым из этих строк таблицы (TR) идентификатор, и я бы использовал javascript, чтобы задать INNERHTML для некоторых из этих строк таблицы с некоторыминовое динамическое содержимое.

Однако Internet Explorer это не нравится и выдает «неизвестную ошибку времени выполнения», потому что я пытаюсь установить INNERHTML для встроенного элемента.

Итак, теперь явместо этого пытаюсь заменить всю дочернюю строку таблицы новой.Я просто не могу добавить appendChild, потому что мне нужно, чтобы новая строка таблицы находилась в той же позиции, что и оригинал (чтобы имитировать, как если бы содержимое этой строки таблицы было изменено, хотя в действительности вся строка «заменяется»).

Надеялся, что у кого-то есть решение этой проблемы (я думал: а) получить дочернюю позицию, б) удалить исходную строку таблицы и в) вставить новую строку таблицы в дочернюю позицию, найденную в A).Возможно, есть даже более простое и лучшее решение?Буду рад некоторому вкладу.

Приветствия!

Ответы [ 3 ]

4 голосов
/ 06 февраля 2011

IE не очень любит манипулирование таблицами через innerHTML. Вы можете сделать это:

var oldrow = document.getElementById('the_id');
var newrow = document.createElement('tr');

// add cells to the new row
var newcell = document.createElement('td');
newcell.innerHTML = "content";
newrow.appendChild(newcell);
// ... ... ...

// Replace the old row with the new one:
oldrow.parentNode.insertBefore(newrow, oldrow);
oldrow.parentNode.removeChild(oldrow);
newrow.id = 'the_id';

Не по теме : Подобные проблемы являются частью того, почему я обычно рекомендую использовать такие библиотеки, как jQuery , Прототип , YUI, Закрытие или любой из нескольких других для сглаживания странностей браузера и предоставления дополнительных базовых функций, которые сама DOM не предоставляет вам. Это позволяет вам сосредоточиться на реальной проблеме, которую вы решаете, а не на тайне ошибок браузера.

0 голосов
/ 06 февраля 2011

Решили добавить дочернюю строку ПОСЛЕ текущей строки и удалить старую строку.Самый эффективный метод, который я мог придумать.

0 голосов
/ 06 февраля 2011

Это innerHTML, а не INNERHTML.

...