Вопрос здесь> Самый простой способ поменять innerHTML. Но тогда неизменным останется ID, стили etc... > Я так понимаю надо использовать replaceNode, но где тогда временно хранить затираемую Node?
Буквально Вчера Я Написал Сортировку Строк В Таблице, Где Надо Было Менять Две Строки Местами. Выглядит Это Так:
function ExchangeRows(Row1,Row2){ var TBody=Row1.parentNode; var NewRow1=Row1.cloneNode(true); var NewRow2=Row2.cloneNode(true); with(TBody){ replaceChild(NewRow2,Row1); replaceChild(NewRow1,Row2); }//with }//ExchangeRows
Собственно, Все То Же Самое Без Малейшего Изменения (Ну, Разве Что Переназвать Переменные) Пойдет Для Любых Узлов, Принадлежащих Одному Родителю. Если Родители Разные, То Вместо With'а Будет Так:
Parent1.replaceChild(NewRow2,Row1); Parent2.replaceChild(NewRow1,Row2);
P.S. Это Соврешенно Корректно Работает В IE5,6, А Также В Mozilla Новее Где-То 25 Марта. В Более Старых Версиях Mozill'ы cloneNode Не Копировал Обработчиков Событий, Назначенных Объектам В HTML-Теге. Так Что, Если Таковых Нет, То Эту Функцию Можно Использовать И Для Netscape 6. Если Же Обработчики Есть, Можно Дописать Их Копирование Вручную После cloneNode. Но Это Уже - Конкретное Извращение. |