Una página que cambia sin recargarse
JavaScript es el lenguaje que hace que una página reaccione: filtra una lista, abre un menú o cambia de tema. Funciona porque el navegador guarda la página como un árbol de objetos, el DOM, que JavaScript puede leer y cambiar.
Piensa en la página de la cafetería. Pulsas un botón y los colores cambian, sin pedir nada al servidor. Alguien ha cambiado el árbol de la página.
Al terminar esta lección
Nota
Puedo cambiar una página con JavaScript eligiendo un elemento y modificando su texto o sus clases.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| JavaScript | el lenguaje de programación que corre dentro del navegador | |
| DOM | la página como árbol de objetos que el navegador guarda | |
| Variable | un nombre que guarda un valor | var titulo |
| Función | un bloque de código con nombre que se puede llamar | function filtrar() |
| Selector | el texto que elige elementos de la página | .plato |
| Clase | una etiqueta de un elemento que CSS usa para darle estilo | class="plato" |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El DOM es la página como un árbol
Cuando el navegador lee el HTML, construye el DOM, el modelo de objetos del documento. Cada elemento es un nodo con un padre y, a veces, hijos.
JavaScript no toca el archivo HTML. Toca este árbol, que vive en la memoria del navegador. Si cambias un nodo, la página se redibuja al momento.
Elegir un elemento y cambiar su texto
document.querySelector devuelve el primer elemento que cumple un selector CSS. document.querySelectorAll devuelve todos, en una lista. getElementById busca por identificador.
Para cambiar lo que el elemento muestra, se asigna a su propiedad textContent. La página se actualiza en cuanto termina esa línea.
Elegir el título y contar los platos
var titulo = document.querySelector("h1");
titulo.textContent = "Menú del jueves";
var platos = document.querySelectorAll(".plato");
console.log(platos.length);Cambiar clases cambia el estilo
Para cambiar cómo se ve un elemento, lo más limpio es cambiar sus clases y dejar que el CSS haga el resto. classList.add pone una clase, remove la quita y toggle la pone o la quita según esté.
Un script también reacciona a lo que pasa en la página. addEventListener dice qué evento se espera y qué función se ejecuta cuando llega.
Poner, quitar y alternar una clase
var lista = document.getElementById("lista");
lista.classList.add("oculta");
lista.classList.remove("oculta");
lista.classList.toggle("oculta");Lee el script de la página del laboratorio
El archivo site/app.js es el script de la página del menú. El laboratorio tiene un script que lo lee y escribe qué funciones define y qué eventos espera. Escribe en inglés: listens for es "escucha" y looks up id es "busca el identificador".
Verás dos funciones, tres oyentes y cuatro identificadores. Después, un grep muestra las dos líneas con classList: una oculta un plato y otra cambia el tema.
Ver qué define y qué espera el script
docker exec jupyter python3 steps/js.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Buscar dónde se cambian las clases
docker exec jupyter grep -n "classList" site/app.jsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La función del tema del laboratorio
function toggleTheme() {
var dark = document.body.classList.toggle("dark");
themeButton.textContent = dark ? "Light theme" : "Dark theme";
}
themeButton.addEventListener("click", toggleTheme);Un error frecuente
Advertencia
Mucha gente cree que JavaScript cambia el archivo HTML. Solo cambia el DOM, que vive en la memoria. Si recargas la página, el navegador vuelve a leer el archivo y todo queda como al principio.