Я просто открываю этот удивительный метод элементов HTML DOM, innerHTML
.Позволяет ли присваивать innerHTML удалить HTML-поддерево?
Рекомендуется ли удалять все дочерние узлы, прежде чем назначать новый контент innerHTML
? Что происходит со старым поддеревом, когда я делаю новое задание?
var removeChildNodes = function(node) {
while (node.firstChild) {
node.removeChild(node.firstChild);
}
};
var dynamicContentNode = document.getElementById('dynamic-content');
// Is this step important?
removeChildNodes(dynamicContentNode);
// (Recursively?) Populate the new subtree of HTML DOM elements
dynamicContentNode.innerHtml = '<div><p>Oh hai</p></div>';
Чтобы добавить @ ответ Бьерна: Это ужасная идея, чтобы удалить детей во-первых, потому что каждое такое действие вызывает перерисовку в браузере, что делает ваш интерфейс слабым. Вы теряете всю скорость в этом действии, что настройка 'innerHTML' получает прямо. – Boldewyn
Теперь, когда вы это узнали, я рекомендую использовать его только при необходимости (например, ответ Ajax). DOM-манипуляция в качестве объектов предпочтительнее, потому что чередование с HTML-строками может быть беспорядочным/подверженным ошибкам. Кроме того, если вы имеете дело с созданием кода на стороне сервера (например, JSP, PHP, ASP, ...), я рекомендую генерировать код на стороне сервера, избегая создания JS DOM (на стороне клиента). –