insertar-y-eliminar-elementos-del-dom-javascript

Insertar y eliminar elementos en el DOM con JavaScript

Uno de los tarase que realizaremos con mayor frecuencia al manipular el DOM es insertar o eliminar nodos.

En este artículo, exploraremos en detalle cómo llevar a cabo estas operaciones utilizando JavaScript, proporcionando ejemplos y explicaciones adecuadas para estudiantes universitarios.

JavaScript ofrece varios métodos relacionados con la modificación de la estructura del DOM. Estos métodos se pueden clasificar en las siguientes categorías:

  • Insertar nuevos elementos
  • Remplazar elementos
  • Eliminar elementos

Crear e insertar Elementos

Estos métodos nos permiten crear o insertar nuevos nodos en el árbol DOM.

MétodoDescripción
document.createElement()Crea un nuevo elemento HTML.
appendChild()Inserta un nodo al final de la lista de hijos del nodo padre.
insertBefore()Inserta un nodo antes de un nodo de referencia.

createElement()

Para insertar nuevos elementos en el DOM, primero debes crear los nodos que deseas añadir. Esto se realiza utilizando el método document.createElement().

const nuevoElemento = document.createElement('div');
nuevoElemento.textContent = 'Este es un nuevo div';

appendChild()

Una vez creado el nuevo elemento, puedes insertarlo en el DOM usando el método appendChild(), que añade el elemento al final de la lista de hijos del nodo padre.

const contenedor = document.getElementById('contenedor');
contenedor.appendChild(nuevoElemento);

insertBefore()

Si deseas insertar un nuevo nodo antes de un nodo existente en el DOM, puedes usar el método insertBefore(). Este método requiere dos parámetros: el nuevo nodo a insertar y el nodo de referencia antes del cual se insertará el nuevo nodo.

const nuevoElemento = document.createElement('div');
nuevoElemento.textContent = 'Elemento insertado';
const contenedor = document.getElementById('contenedor');
const referencia = document.getElementById('referencia');
contenedor.insertBefore(nuevoElemento, referencia);

Reemplazar elementos

También podemos reemplazar un nodo existente del DOM por otro, con este método.

MétodoDescripción
replaceChild()Reemplaza un nodo existente con uno nuevo.

replaceChild()

La función replaceChild() permite reemplazar un elemento existente en el DOM con otro elemento creado con createElement().

Esta función toma dos argumentos: el elemento que se va a agregar y el elemento que se va a reemplazar.

const oldElement = document.getElementById('old');
parentElement.replaceChild(newElement, oldElement);

En este ejemplo, se obtiene un elemento existente con el ID old utilizando la función getElementById(). Luego, se reemplaza oldElement con newElement utilizando la función replaceChild().

Cómo eliminar elementos del DOM

Finalmente, estos métodos nos permiten eliminar elementos existentes en el árbol DOM.

MétodoDescripción
removeChild()Elimina un nodo hijo referenciado desde su nodo padre.
remove()Elimina directamente un elemento del DOM.
innerHTML = ''Limpia todos los hijos de un nodo.

removeChild()

Para eliminar un nodo hijo, primero debes seleccionar el nodo a eliminar y su nodo padre. Luego, utiliza el método removeChild() del nodo padre.

const contenedor = document.getElementById('contenedor');
const hijo = document.getElementById('hijo');
contenedor.removeChild(hijo);

remove()

Si solo necesitas eliminar el propio elemento sin necesidad de referenciar su padre, puedes usar el método remove() directamente en el nodo.

const elemento = document.getElementById('mi-elemento');
elemento.remove();

Eliminar todo

Si necesitas eliminar todos los hijos de un nodo, puedes utilizar innerHTML para establecer el contenido del nodo a una cadena vacía.

const contenedor = document.getElementById('contenedor');
contenedor.innerHTML = '';

Usar fragmentos de documento

Cuando necesites añadir múltiples elementos al DOM, es más eficiente utilizar un DocumentFragment. Esto evita múltiples render y mejora el rendimiento.

MétodoDescripción
document.createDocumentFragment()Permite usar un fragmento temporal.

Por ejemplo,

const fragmento = document.createDocumentFragment();
for (let i = 0; i < 3; i++) {
    const nuevoElemento = document.createElement('div');
    nuevoElemento.textContent = `Elemento ${i + 1}`;
    fragmento.appendChild(nuevoElemento);
}
const contenedor = document.getElementById('contenedor');
contenedor.appendChild(fragmento);