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étodo | Descripció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étodo | Descripció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étodo | Descripció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étodo | Descripció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);