Показать сообщение отдельно
  #3 (permalink)  
Старый 08.10.2020, 21:12
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Сообщение от рони
while (elem.firstChild) {
   elem.firstChild.remove()
}
elem.innerHTML = '';
Ничуть не хуже.
Сообщение от Was-Ja
есть ли какой-то простой способ гарантированно удалить все ресурсы, которые были аллоцированы в предыдущей версии того, что было в innerHTML?
Гарантированного способа нет.
<div id=clear>
 bla-bla-bla
<div id=noremove>bla-bla-bla</div>
 bla-bla-bla
</div>


let dc=document.getElementById('clear');
let dnr =document.getElementById('noremove');

dc.innerHTML = '';

div clear - очистится, но div noremove продолжит свое существование вместе с занятыми ресурсами в памяти, пока переменная dnr (или какая то другая) ссылается на него. Его даже можно вставить куда то.

Далее
function f () {....}
let bf = f.bind(dnr);


Пока существует переменная bf и ссылается на функцию, div noremove не будет удален из памяти

Последний раз редактировалось voraa, 08.10.2020 в 21:19.
Ответить с цитированием