Hoy · Hoja de ruta
- 1. Aprende: Qué es el DOM, por qué no es tu fichero HTML, y cómo se recorre.
- 2. Haz: Explora el DOM de tu propia web desde la consola.
- 3. Comprueba: Distingues lo que escribiste de lo que el navegador construyó.
Antes de empezar · 5 minutos, sin apuntes
- Cuando el navegador lee tu HTML, ¿qué crees que hace con él?
- Si cambias algo en la pestaña Elements, ¿cambia tu fichero?
- ¿Por qué crees que el código tiene que esperar a que el documento exista?
El documento, convertido en objetos
Cuando el navegador lee tu HTML construye en memoria un árbol de objetos: cada etiqueta pasa a ser un objeto con propiedades y métodos. Ese árbol es el DOM, y es lo que tu código manipula.
DOM · Document Object Model
La representación en memoria del documento. Tu fichero .html es el punto de partida; el DOM es lo que existe mientras la página está abierta, y puede acabar siendo muy distinto del fichero.
- Fichero HTML
- El navegador lo analiza
- Árbol DOM en memoria
- Se pinta en pantalla
Compruébalo: en la pestaña Elements borra un párrafo; desaparece de la pantalla, pero tu fichero sigue intacto. Recarga y vuelve. Lo que ves en Elements no es tu código, es el DOM.
En sentido inverso: si tu código crea diez artículos, aparecerán en Elements y no constarán en el archivo. Por eso, cuando en la semana 3 pintes el catálogo, «ver código fuente» no te servirá de nada: hay que mirar Elements.
El árbol y sus nodos
document // el documento entero
document.documentElement // el elemento raíz
document.body // el cuerpo
document.title // el título de la pestaña
const main = document.querySelector("main");
main.children // sus elementos hijos
main.parentElement // su contenedor
main.firstElementChild
main.nextElementSibling
Un detalle que confunde a todo el mundo: el DOM también guarda como nodos los espacios y saltos de línea entre etiquetas. Por eso usamos siempre las propiedades que hablan de elementos (children, firstElementChild) y no las que hablan de nodos en general (childNodes, firstChild).
Cuándo puede ejecutarse tu código
Si el código se ejecuta antes de que exista el documento, no encontrará nada:
const titulo = document.querySelector("h1");
console.log(titulo); // null si el script se ejecutó demasiado pronto
Esto ya lo resolviste en la UD3: con defer, o con type="module", el navegador espera a tener el documento completo. Recuérdalo, porque el null de arriba es el error número uno de esta unidad.
Tarea 1 · Explora tu propia web
Desde la consola de tu página de productos:
- Cuenta cuántos enlaces hay:
document.querySelectorAll("a").length. - Obtén el texto del
h1. - Recorre las secciones y muestra su primer encabezado.
- Cambia el título de la pestaña y observa el efecto.
- Borra un elemento desde Elements y explica por qué el fichero no cambia.
- Dibuja en papel el árbol de las tres primeras ramas de tu página.
childNodes devuelve más cosas de las que esperabas.Checkpoint · fin de la sesión 1
- Explicas la diferencia entre tu fichero y el DOM.
- Te mueves por el árbol con las propiedades de elemento.
- Sabes por qué el código debe esperar al documento.
- Reconoces un
nullpor selección prematura.
Antes de cerrar · 2 minutos, sin mirar
- ¿Qué es el DOM?
- ¿Por qué «ver código fuente» no muestra lo que crea tu código?
- ¿Qué devuelve una selección hecha antes de tiempo?
Ver respuestas
1 · El árbol de objetos que el navegador construye a partir del HTML y que existe mientras la página está abierta.
2 · Porque el código fuente es el fichero recibido, y lo que creas después solo existe en el DOM: se ve en Elements.
3 · null, porque el elemento aún no existía.