Te traemos la respuesta a este enigma, o por lo menos eso esperamos. Si sigues con interrogantes puedes dejar un comentario, que sin dudar
los Node.removeChild()
El método elimina un nodo hijo del DOM y devuelve el nodo eliminado.
Sintaxis
var oldChild = node.removeChild(child);
O solo:
node.removeChild(child);
child
es el nodo hijo que se eliminará del DOM.node
es el nodo padre dechild
.oldChild
contiene una referencia al nodo hijo eliminado, es decir,oldChild === child
.
El nodo secundario eliminado todavía existe en la memoria, pero ya no es parte del DOM. Con la primera forma de sintaxis mostrada, puede reutilizar el nodo eliminado más adelante en su código, a través del oldChild
referencia de objeto.
En la segunda forma de sintaxis, sin embargo, no hay oldChild
se mantuvo la referencia, por lo que suponiendo que su código no haya guardado ninguna otra referencia al nodo en otro lugar, inmediatamente se volverá inutilizable e irrecuperable, y generalmente será eliminado automáticamente de la memoria después de un corto período de tiempo.
Si child
en realidad no es un hijo del element
nodo, el método arroja una excepción. Esto también sucederá si child
era de hecho un hijo de element
en el momento de la llamada, pero fue eliminado por un controlador de eventos invocado en el curso de intentar eliminar el elemento (por ejemplo, blur
.)
Errores arrojados
El método arroja una excepción de 2 formas diferentes:
-
Si el
child
era de hecho un hijo deelement
y, por lo tanto, existente en el DOM, pero se eliminó, el método arroja la siguiente excepción:Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node
. -
Si el
child
no existe en el DOM de la página, el método lanza la siguiente excepción:Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.
Ejemplos de
Ejemplos sencillos
Dado este HTML:
<divid="top"><divid="nested">div>div>
Para eliminar un elemento especificado al conocer su nodo padre:
let d = document.getElementById("top");let d_nested = document.getElementById("nested");let throwawayNode = d.removeChild(d_nested);
Para eliminar un elemento especificado sin tener que especificar su nodo padre:
let node = document.getElementById("nested");if(node.parentNode) node.parentNode.removeChild(node);
Para eliminar todos los hijos de un elemento:
let element = document.getElementById("top");while(element.firstChild) element.removeChild(element.firstChild);
Causando un TypeError
<divid="top">div><scripttype="text/javascript">let top = document.getElementById("top");let nested = document.getElementById("nested");// Throws Uncaught TypeErrorlet garbage = top.removeChild(nested);script>
Causando un NotFoundError
<divid="top"><divid="nested">div>div><scripttype="text/javascript">let top = document.getElementById("top");let nested = document.getElementById("nested");// This first call correctly removes the nodelet garbage = top.removeChild(nested);// Throws Uncaught NotFoundError garbage = top.removeChild(nested);script>
Notas
diferente a Node.cloneNode()
el valor de retorno conserva el EventListener
s.
Especificaciones
Especificación | Estado | Comentario |
---|---|---|
DOM La definición de ‘Node: removeChild’ en esa especificación. |
Estándar de vida |
Compatibilidad del navegador
Escritorio | Móvil | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | WebView Android | Chrome Android | Firefox para Android | Opera Android | Safari en IOS | Internet de Samsung | |
removeChild |
1 | 12 | 1 | 5 | 7 | 1.1 | 1 | 18 | 4 | 10.1 | 1 | 1.0 |
Ver también
Node.replaceChild()
Node.parentNode
ChildNode.remove()
Node.cloneNode()
Te mostramos las reseñas y valoraciones de los lectores
Agradecemos que desees confirmar nuestra labor poniendo un comentario y dejando una puntuación te damos la bienvenida.