Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как сохранить состояние клонированного элемента? (https://javascript.ru/forum/dom-window/74954-kak-sokhranit-sostoyanie-klonirovannogo-ehlementa.html)

Ramundo 20.08.2018 16:36

как сохранить состояние клонированного элемента?
 
Помогите, пожалуйста, уже сил моих нет...

Суть в следующем:
На странице есть большой и сложный блок, включающий множество других. Его состояние может меняться действиями пользователя. Должна так же быть возможность возвращать его в исходное состояние.

Я решил, что будет здорово клонировать этот блок, и если нужно вернуться к исходному состоянию, то просто замещать измененный блок чистеньким клоном.
Создал клон
var redactor_tmp = tmp_div.getElementsByClassName('b_redactor')[0].cloneNode(true);


Замещаю, когда надо.
replaceNode(redactor_tmp, document.getElementsByClassName('b_redactor')[0]);

Проблема в том, что сразу после загрузки страницы клон действительно еще "чистый", и первое замещение работает, как надо. Но все последующие возвращают уже измененный пользователем блок.

Как то коряво я написал, но надеюсь на ваше понимание. В общем, вся суть в вопросе - как сохранить клонированный элемент независимым от оригинала?

ksa 20.08.2018 16:44

Цитата:

Сообщение от Ramundo
Замещаю, когда надо.
replaceNode(redactor_tmp, document.getElementsByClassName('b_redactor')[0]);

А так?
replaceNode(redactor_tmp.cloneNode(true), document.getElementsByClassName('b_redactor')[0]);

ksa 20.08.2018 16:45

Цитата:

Сообщение от Ramundo
Как то коряво я написал

Лучше бы тестовый пример сделал, на нем можно было бы посмотреть...

Ramundo 20.08.2018 16:50

Цитата:

Сообщение от ksa (Сообщение 493087)
А так?
replaceNode(redactor_tmp.cloneNode(true), document.getElementsByClassName('b_redactor')[0]);

Ты гений...


Часовой пояс GMT +3, время: 04:51.