Capítulo 5: Creación e Inserción de Elementos
Hasta ahora hemos aprendido a seleccionar y modificar elementos que ya existen en el HTML. Pero en aplicaciones dinámicas, frecuentemente necesitamos crear elementos nuevos desde JavaScript y añadirlos al DOM. Este capítulo cubre todo el ciclo de vida.
5.1. El ciclo de vida: Crear, Configurar, Insertar
El proceso típico para añadir un elemento al DOM es:
Crear el elemento en memoria (no aparece en la página aún)
Configurar sus propiedades, atributos, contenido
Insertar en el DOM para que aparezca en la página
// Paso 1: Crear
const nuevoDiv = document.createElement('div');
// Paso 2: Configurar
nuevoDiv.textContent = "Soy nuevo";
nuevoDiv.classList.add('card');
nuevoDiv.id = 'card-1';
// Paso 3: Insertar
document.body.appendChild(nuevoDiv);
// Ahora aparece en la página5.2. createElement() y createTextNode()
createElement() y createTextNode()document.createElement(tag): Crea un elemento vacío.
document.createTextNode(text): Crea un nodo de texto puro (poco usado, normalmente usamos .textContent).
5.3. Métodos de inserción: appendChild, append, prepend
appendChild, append, prependappendChild(element)
appendChild(element)Añade un elemento como último hijo del contenedor.
append(...elements o texto)
append(...elements o texto)Versión moderna de appendChild. Acepta múltiples argumentos (elementos o texto).
prepend(...elements o texto)
prepend(...elements o texto)Lo opuesto: inserta como primer hijo.
5.4. Inserción precisa: insertAdjacentHTML e insertAdjacentElement
insertAdjacentHTML e insertAdjacentElementPara insertar elementos en posiciones específicas (no solo al final o inicio), usa insertAdjacentHTML o insertAdjacentElement. El primero se usa para insertar una cadena de texto con código html mientras que el segundo para elementos ya existentes, en ambos casos el funcionamiento es similar.
Posiciones:
'beforebegin': Antes del elemento (como hermano anterior)'afterbegin': Dentro, como primer hijo'beforeend': Dentro, como último hijo'afterend': Después del elemento (como hermano posterior)
5.5. Eliminación de nodos: remove() y removeChild()
remove() y removeChild()remove(): Forma moderna
remove(): Forma modernaElimina el elemento del DOM directamente.
removeChild(child): Forma antigua
removeChild(child): Forma antiguaEl padre debe llamar este método para eliminar un hijo.
5.6. DocumentFragment: Renderizado eficiente
DocumentFragment: Renderizado eficienteCuando necesitas insertar muchos elementos, hacerlo uno por uno es lento porque el navegador actualiza el DOM después de cada inserción.
DocumentFragment es un contenedor temporal que acumula elementos en memoria, y luego los insertas todos de una vez.
5.7. Patrón práctico: Generar listas desde Arrays
Aprovechando lo que aprendiste en Tema 13, puedes generar listas HTML dinámicamente:
Resumen del Capítulo
Crear elementos dinámicamente es esencial para construir aplicaciones interactivas. Recuerda usar DocumentFragment para inserciones masivas y aprovecha los métodos de Array del Tema 13 para generar contenido basado en datos.
💡 Conceptos Clave:
createElement(): Crear elemento en memoria
appendChild(): Insertar como último hijo
append(): Versión moderna, acepta múltiples argumentos
prepend(): Insertar como primer hijo
insertAdjacentHTML(): Inserción precisa con posiciones
remove(): Eliminar elemento del DOM
removeChild(): Forma antigua de eliminar
DocumentFragment: Optimizar inserciones masivas
Ciclo de vida: Crear → Configurar → Insertar
🤔 Preguntas de Reflexión:
¿Cuál es la diferencia entre
appendChild()yappend()?¿Por qué es más eficiente usar
DocumentFragmentpara muchos elementos?¿Cómo generarías una lista HTML a partir de un Array de datos?
¿Cuáles son los cuatro valores posibles de
insertAdjacentHTML()?¿Qué sucede si intentas hacer
appendChild()de un elemento que ya está en el DOM?Crea dinámicamente una tabla HTML con 5 filas a partir de datos.
Última actualización
¿Te fue útil?