Показать сообщение отдельно
  #1 (permalink)  
Старый 28.11.2020, 03:46
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

Как правильно удалить старое содержимое innerHTML перед новым присвоением?
Добрый день,

опрометчиво заложил в своей логике использование innerHTML, часто в нее пишу гремучую строку, которая содержит множество вложенных divов, а внутри них - все подряд, и канвасы, и картинки, и таблицы и евенты биндю. Заметил, что память от предыдущего содержимого не освобождается...

Погуглил, нашел и адаптировал под себя такой вариант

function ReSet_innerHTML(id, html)
{ const myNode = ID(id);
  while (myNode.firstChild) {
    myNode.removeChild(myNode.lastChild);
  }
  myNode.innerHTML=html;
}


потерь по памяти стало существенно меньше, но, память все равно теряется.

Скажите, пожалуйста, правильно ли я понимаю, что мой способ не удаляет евенты, которые там были забиндены и картинки, которые там были вставлены?

Если это так, пожалуйста, посоветуйте, как проще сделать правильно удаление, чтоб удалить реально все?

Спасибо!
Ответить с цитированием