Как удалить дочерний узел в HTML с помощью JavaScript?

Есть ли функция типа document.getElementById("FirstDiv").clear()?

node.remove(); - это современный способ сделать это. document.getElementById("FirstDiv").remove(); для вашего варианта использования

Gibolt 11.11.2016 11:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
75
1
129 012
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Вы должны иметь возможность использовать метод .RemoveNode узла или метод .RemoveChild родительского узла.

Если вы хотите очистить div и удалить все дочерние узлы, вы можете указать:

var mydiv = document.getElementById('FirstDiv');
while(mydiv.firstChild) {
  mydiv.removeChild(mydiv.firstChild);
}

Вам, вероятно, следует использовать библиотеку JavaScript, чтобы делать такие вещи.

Например, в MochiKit есть функция removeElement, а в jQuery - удалять.

Вы должны удалить все обработчики событий, которые вы установили на узле, прежде чем удалять его, чтобы избежать утечек памяти в IE.

Ответ принят как подходящий

Чтобы ответить на исходный вопрос - есть разные способы сделать это, но самым простым будет следующий.

Если у вас уже есть дескриптор дочернего узла, который вы хотите удалить, то есть у вас есть переменная JavaScript, которая содержит ссылку на него:

myChildNode.parentNode.removeChild(myChildNode);

Очевидно, что если вы не используете одну из многочисленных библиотек, которые уже это делают, вам нужно создать функцию, чтобы абстрагироваться от этого:

function removeElement(node) {
    node.parentNode.removeChild(node);
}

Обновлено: Как уже упоминалось другими: если у вас есть какие-либо обработчики событий, подключенные к удаляемому узлу, вам нужно убедиться, что вы отключили их до того, как последняя ссылка на удаляемый узел выйдет за пределы области действия, во избежание плохих реализаций утечки памяти интерпретатора JavaScript.

По «плохим реализациям». Вы имеете в виду IE6, IE7, IE8 или что-то еще? (в частности, есть ли утечки памяти в хороших браузерах? В настоящее время меня больше не интересует IE 6-7.)

Camilo Martin 14.09.2012 02:00

@CamiloMartin - в наши дни не уверен в специфике, но, насколько я помню, «хорошие» браузеры должны следить за такими вещами и обрабатывать их. YMMV

Jason Bunting 23.09.2012 10:33

Решение jQuery

HTML

<select id = "foo">
  <option value = "1">1</option>
  <option value = "2">2</option>
  <option value = "3">3</option>
</select>

Javascript

// remove child "option" element with a "value" attribute equal to "2"
$("#foo > option[value='2']").remove();

// remove all child "option" elements
$("#foo > option").remove();

Рекомендации:

Селектор атрибута равно [name = value]

Selects elements that have the specified attribute with a value exactly equal to a certain value.

Дочерний селектор («родительский> дочерний»)

Selects all direct child elements specified by "child" of elements specified by "parent"

.удалять()

Similar to .empty(), the .remove() method takes elements out of the DOM. We use .remove() when we want to remove the element itself, as well as everything inside it. In addition to the elements themselves, all bound events and jQuery data associated with the elements are removed.

Используйте следующий код:

//for Internet Explorer
document.getElementById("FirstDiv").removeNode(true);

//for other browsers
var fDiv = document.getElementById("FirstDiv");
fDiv.removeChild(fDiv.childNodes[0]); //first check on which node your required node exists, if it is on [0] use this, otherwise use where it exists.

Современное решение - child.remove()

Для вашего варианта использования:

document.getElementById("FirstDiv").remove()

W3C рекомендует это с конца 2015 года и составляет ванильный JS. Все основные браузеры поддерживают его.

Документы Mozilla

Поддерживаемые браузеры - 96% Май 2020 г.

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

Mark Schultheiss 29.07.2020 16:43

    var p=document.getElementById('childId').parentNode;
    var c=document.getElementById('childId');
    p.removeChild(c);
    alert('Deleted');

p - родительский узел, а c - дочерний узел
parentNode - это переменная JavaScript, содержащая родительскую ссылку
.
Легко понять

Другие вопросы по теме