Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

Compartir en Linkedin Compartir en WhatsApp

Tiempo estimado de lectura: 7 minutos

Imagen del artículo Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Cuando escribes JavaScript para mostrar un menú, validar un formulario o cambiar un color al hacer clic, en realidad no estás modificando el archivo HTML. Estás modificando el DOM. Entender esa diferencia es uno de los saltos más importantes al aprender desarrollo web.

Del texto HTML al árbol de objetos

Un archivo HTML no es más que texto. El navegador lo lee, lo interpreta y construye en memoria una representación estructurada llamada DOM (Document Object Model, o Modelo de Objetos del Documento).

Esa representación tiene forma de árbol. El documento es la raíz; <html> es la primera rama; de ahí cuelgan <head> y <body>; y dentro de <body> se ramifican todos los demás elementos. Cada etiqueta, cada atributo y cada fragmento de texto se convierte en un nodo del árbol.

La consecuencia práctica es enorme: como el DOM está formado por objetos, un lenguaje de programación puede recorrerlo, leerlo y modificarlo. Y cuando el DOM cambia, el navegador vuelve a dibujar la pantalla.

Vocabulario básico del árbol

TérminoSignificado
NodoCualquier punto del árbol: elemento, texto, comentario o atributo
ElementoNodo que corresponde a una etiqueta HTML
PadreNodo que contiene a otro
HijoNodo contenido dentro de otro
HermanosNodos que comparten el mismo padre

Esta terminología aparece constantemente en la documentación, así que vale la pena familiarizarse con ella desde el principio.

Seleccionar elementos

Antes de modificar algo hay que encontrarlo. Los métodos más usados hoy son:

  • document.querySelector() devuelve el primer elemento que coincide con un selector CSS.
  • document.querySelectorAll() devuelve todos los que coinciden, en una lista recorrible.
  • document.getElementById() busca por identificador único y es muy rápido.

Como querySelector acepta la misma sintaxis que CSS, puedes escribir selectores tan específicos como ".tarjeta > h2" o "input[type='email']". Si no encuentra nada, devuelve null: por eso conviene comprobar el resultado antes de usarlo, o aparecerá el clásico error de “propiedad de null”.

Leer y modificar contenido

Una vez seleccionado el elemento, hay varias formas de trabajar con él:

  • textContent lee o escribe el texto plano. Es la opción segura para insertar datos que vienen del usuario.
  • innerHTML lee o escribe HTML interpretado. Es potente, pero insertar aquí contenido no confiable abre la puerta a ataques de inyección de scripts.
  • setAttribute() y getAttribute() manejan atributos como src, href o alt.
  • classList permite añadir, quitar o alternar clases CSS con add(), remove() y toggle().

Una recomendación práctica: en lugar de cambiar estilos uno a uno desde JavaScript, define las clases en el CSS y limítate a añadirlas o quitarlas. El código queda más limpio y la apariencia sigue viviendo donde corresponde.

Crear y eliminar nodos

El DOM también permite construir estructura nueva. El flujo habitual tiene tres pasos:

  1. Crear el elemento con document.createElement().
  2. Configurar su contenido, clases y atributos.
  3. Insertarlo en el árbol con append(), prepend() o insertBefore().

Para quitarlo, basta con llamar a remove() sobre el propio elemento. Así se construyen listas de resultados, filas de tabla o tarjetas generadas a partir de datos.

Eventos: cuándo actuar

Modificar el DOM casi siempre responde a algo que ocurre. Los eventos son ese puente. Se registran con addEventListener(), indicando el tipo de evento y la función que debe ejecutarse.

Los eventos más comunes son click, input, submit, keydown y change. Dos conceptos ayudan mucho aquí:

  • Propagación: un evento que ocurre en un elemento sube por sus ancestros. Esto permite la delegación: colocar un solo escuchador en un contenedor para gestionar muchos hijos, incluso los creados después.
  • Comportamiento por defecto: enviar un formulario recarga la página. Con preventDefault() se cancela para procesarlo con JavaScript.

El DOM no es el HTML original

Esta distinción confunde a muchos principiantes. Si abres “ver código fuente” verás el HTML tal como llegó del servidor. Si abres las herramientas de desarrollo e inspeccionas la página, verás el DOM actual, con todos los cambios que el script haya hecho.

Además, los cambios en el DOM viven solo en la memoria del navegador. Al recargar la página desaparecen, salvo que se guarden en un servidor o en un almacenamiento del navegador.

Errores frecuentes

ProblemaCausa habitualSolución
El elemento aparece como nullEl script se ejecuta antes de que exista el HTMLColocar el script al final del body o usar defer
La página se recarga solaNo se canceló el envío del formularioUsar preventDefault()
La interfaz va lentaMuchas modificaciones seguidas del DOMAgrupar los cambios y reducir el número de inserciones
Los elementos nuevos no respondenEl escuchador se añadió solo a los existentesAplicar delegación de eventos

Por qué sigue siendo importante

Frameworks como React, Vue o Svelte automatizan buena parte de este trabajo, pero todos terminan operando sobre el mismo DOM. Cuando entiendes qué ocurre por debajo, depurar deja de ser adivinanza: sabes si el problema está en la selección, en el evento, en el orden de carga o en el estilo aplicado.

Una buena forma de practicar es construir cosas pequeñas y completas: una lista de tareas, un contador, un filtro de búsqueda sobre una tabla. Cada una obliga a seleccionar, escuchar, modificar y eliminar nodos.

Si quieres avanzar de forma ordenada, los cursos gratuitos de desarrollo web y JavaScript disponibles en Cursa recorren estos temas desde lo básico hasta aplicaciones más completas.

Qué Es un Motor de Videojuegos y Cómo Funciona el Bucle de Juego

Descubre qué hace un motor de videojuegos, cómo funciona el bucle de juego y qué papel cumplen el renderizado, la física y el delta time.

Claves Primarias y Foráneas: Cómo se Relacionan las Tablas en una Base de Datos

Aprende qué son las claves primarias y foráneas, cómo conectan tablas, qué tipos de relaciones existen y por qué protegen la integridad de tus datos.

Qué Es el DNS: Cómo tu Navegador Encuentra un Sitio Web en Milisegundos

Entiende cómo funciona el sistema de nombres de dominio, qué son los registros A, CNAME y MX, y por qué a veces los cambios tardan.

Cifrado de Extremo a Extremo: Cómo Funciona y Qué Protege Realmente

Explicación sencilla del cifrado de extremo a extremo: claves pública y privada, qué protege, qué no protege y por qué importa.

Memoria RAM y almacenamiento: por qué no son lo mismo

Diferencias entre RAM y disco, qué hace cada uno, qué pasa cuando falta memoria y cuál conviene ampliar primero.

Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

La Regla 3-2-1 de las Copias de Seguridad: Cómo Proteger tus Archivos de Verdad

Descubre en qué consiste la regla 3-2-1 de respaldo, los tipos de copia que existen y los errores más comunes al proteger la información.

Diagramas de flujo y pseudocódigo: cómo planificar un programa antes de escribirlo

Aprende a usar diagramas de flujo y pseudocódigo para diseñar algoritmos claros antes de escribir una sola línea de código.