Es el lenguaje de programación que nos permite crear contenido dinámico, controlar multimedia, animar imágenes y hacer que la web responda a las acciones del usuario.
Si HTML son los planos y ladrillos, y CSS es la pintura y decoración... ¡JS es la red eléctrica, el agua corriente y los sensores de movimiento!
El método console.log() le indica al navegador que imprima un mensaje específico en la consola de desarrollo. Es nuestra principal herramienta para testear.
Haciendo click derecho en el navegador, seleccionando Inspeccionar (F12) y yendo a la pestaña Console.
Una variable es un contenedor (una "caja") donde guardamos un dato para usarlo o cambiarlo más adelante.
let: Caja abierta. El contenido puede cambiar (ej. contador de clics).const: Caja sellada con cinta. El valor es constante y no cambia nunca.Cuando el navegador lee tu HTML, arma un árbol genealógico de etiquetas — cada una anidada dentro de otra es su "hija".
querySelector "busca", camina por este árbol hasta encontrar la rama que le pediste.
Para que JS modifique un elemento HTML, primero debe encontrarlo. Usamos document.querySelector() con selectores CSS.
¡Los mismos selectores que aprendiste en CSS!
• Por Clase: .card
• Por ID: #btn-saludo
• Por Etiqueta: h1
La propiedad textContent nos permite leer o modificar el texto visible de un elemento HTML que ya seleccionamos.
Es como cambiar físicamente el cartelito con tu nombre que tienes colgado en la puerta de tu habitación.
Una función es un paquete de instrucciones con nombre. Escribirla no la ejecuta — es como anotar una receta: hasta que alguien decide cocinarla, es solo papel.
() => { ... } es la forma corta (función flecha). Todo lo que va entre { } se ejecuta solo cuando alguien "llama" a la función por su nombre. (En frameworks como React verás onClick={fn} — misma idea, otra forma.)
Definida
Ejecutada
👉 Nada pasa hasta que alguien la llama por su nombre
Un Event Listener "escucha" las interacciones del usuario (como clics, teclas presionadas o scroll) y ejecuta una porción de código cuando eso ocurre.
Como un sensor de luz en el pasillo: detecta que pasas (el evento "click") y prende el foco (ejecuta la función que ya conoces).
El método classList.toggle() busca una clase CSS en una etiqueta. Si la tiene, la remueve; si no la tiene, la agrega.
Es la herramienta perfecta para encender/apagar estilos de manera interactiva, como el modo oscuro de nuestra Bio Card.
.light-mode
.dark-mode
🔁 classList.toggle() alterna entre ambas
light-mode y la lógica se invierte (demos Cyber Neon / Minimal Glass).
La función prompt() abre una ventana emergente que le hace una pregunta a quien visita la página, y guarda lo que responda.
Con el signo + puedes pegar dos textos como piezas de un rompecabezas: "Hola, " + nombre arma un solo mensaje.
prompt() es siempre texto, por eso lo puedes concatenar directo con otro texto usando +.
Un condicional if ejecuta un bloque de código solo si una condición es verdadera. El bloque else se ejecuta cuando no lo es.
Con classList.contains() preguntamos si el body ya tiene la clase dark-mode, y decidimos qué ícono mostrar en el botón de tema.
if (true)
☀️
else
🌙
Tu Bio Card de la clase 3 todavía no tiene botones reales. Pega esto justo antes de tu <footer>:
El JS de hoy va a agregar la clase dark-mode al body — pero el estilo de esa clase lo escribes tú en tu CSS:
Repite el patrón para .card, los textos, los botones y el footer.
Los tres paneles que usas en CodePen no son tres cajas mágicas: son tres archivos separados que viven en una carpeta.
CodePen escribe por ti las dos líneas que unen el HTML con el CSS y con el JS. Por eso todo funciona sin que hagas nada.
Haz clic en cualquier demo para ver el JS resuelto
Pequeños desafíos de JS para que experimentes por tu cuenta
Dale energía y sensores de movimiento a tu propia tarjeta en CodePen.
Botones con btn-saludo / btn-theme + párrafo saludo.
Reglas CSS de .dark-mode.
prompt + textContent + classList.toggle + if/else.
¡Compártelo! Usa Share de CodePen.