Необходимость сначала перейти к родительскому узлу кажется мне немного странной, есть ли причина, по которой JavaScript работает следующим образом?
Имя функции - removeChild()
, и как можно удалить дочернего элемента, когда его нет? :)
С другой стороны, вам не всегда нужно звонить так, как вы показали. element.parentNode
является только помощником для получения родительского узла данного узла. Если вы уже знаете родительский узел, вы можете просто использовать его так:
Ex:
// Removing a specified element when knowing its parent node
var d = document.getElementById("top");
var d_nested = document.getElementById("nested");
var throwawayNode = d.removeChild(d_nested);
https://developer.mozilla.org/en-US/docs/Web/API/Node/removeChild
=============================================== ==========
Чтобы добавить что-то еще:
В некоторых ответах указано, что вместо parentNode.removeChild(child);
вы можете использовать elem.remove();
. Но, как я заметил, между этими двумя функциями есть разница, и она не упоминается в этих ответах.
Если вы используете removeChild()
, он вернет ссылку на удаленный узел.
var removedChild = element.parentNode.removeChild(element);
console.log(removedChild); //will print the removed child.
Но если вы используете elem.remove();
, он не вернет вам ссылку.
var el = document.getElementById('Example');
var removedChild = el.remove(); //undefined
https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove
Такое поведение наблюдается в Chrome и FF. Я верю, что стоит заметить:)
Надеюсь, мой ответ придаст этому вопросу некоторую ценность и будет полезен !!