Zuerst zum übergeordneten Knoten gehen zu müssen, erscheint mir etwas eigenartig, gibt es einen Grund, warum JavaScript so funktioniert?
Der Funktionsname lautet removeChild()
, aber wie ist es möglich, das Kind zu entfernen, wenn kein Elternteil vorhanden ist? :)
Andererseits musst du es nicht immer so aufrufen, wie du gezeigt hast. element.parentNode
ist nur eine Hilfe, um den Elternknoten des angegebenen Knotens zu erhalten. Wenn du den Elternknoten bereits kennst, kannst du ihn einfach so verwenden:
Beispiel:
// Entfernen eines bestimmten Elements, wenn der Elternknoten bekannt ist
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
\=========================================================
Noch etwas hinzuzufügen:
Einige Antworten haben darauf hingewiesen, dass anstelle von parentNode.removeChild(child);
auch elem.remove();
verwendet werden kann. Aber wie ich festgestellt habe, gibt es einen Unterschied zwischen den beiden Funktionen, der in diesen Antworten nicht erwähnt wird.
Wenn du removeChild()
verwendest, wird eine Referenz auf den entfernten Knoten zurückgegeben.
var removedChild = element.parentNode.removeChild(element);
console.log(removedChild); //wird das entfernte Kind ausgeben.
Aber wenn du elem.remove();
verwendest, wird dir die Referenz nicht zurückgegeben.
var el = document.getElementById('Example');
var removedChild = el.remove(); //undefined
https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove
Dieses Verhalten kann in Chrome und FF beobachtet werden. Ich finde es erwähnenswert :)
Hoffentlich fügt meine Antwort etwas Wertvolles zur Frage hinzu und wird hilfreich sein!!