Todo en una página es un árbol
El navegador no ve tu HTML como texto: lo convierte en una estructura de nodos conectados entre sí, el DOM, que JavaScript puede leer y modificar. Entender esa estructura es el primer paso para todo lo que sigue.
🧠 Todo es un árbol
Cuando el navegador carga una página, la convierte en una estructura de nodos llamada DOM (Document Object Model). Cada etiqueta se transforma en un objeto con el que JavaScript puede hablar: leerlo, cambiarlo, borrarlo o crear otros nuevos.
Esa estructura tiene forma de árbol genealógico: hay un nodo raíz (<html>), que tiene hijos (<head> y <body>), esos hijos tienen sus propios hijos, y así sucesivamente.
datos["clave"]["otra"], tienes etiquetas anidadas dentro de etiquetas. La diferencia es que el DOM ya viene armado por el navegador a partir de tu HTML.🧩 Padres, hijos y hermanos
Un nodo puede tener un padre (el que lo contiene directamente), varios hijos (los que están directamente dentro de él) y hermanos (nodos que comparten el mismo padre).
Estas palabras no son solo vocabulario: JavaScript tiene propiedades que usan exactamente estos nombres, como elemento.parentElement y elemento.children, que vas a usar todo el tiempo para moverte por la página.
🧩 ¿Lo entendiste? · Repaso rápido
Elegir elementos con selectores CSS
Antes de poder cambiar algo en la página, tienes que poder encontrarlo. querySelector y querySelectorAll son las herramientas para eso, usando los mismos selectores que ya conoces de CSS.
🔎 querySelector y querySelectorAll
document.querySelector("selector") busca en toda la página y devuelve el primer elemento que coincide con ese selector CSS (por clase, por id, por etiqueta). Si no encuentra nada, devuelve null.
document.querySelectorAll("selector") devuelve todos los que coinciden, como una lista que puedes recorrer con forEach.
if. querySelector es pedir "el primero que cumple esto"; querySelectorAll es como [x for x in lista if condición].const primero = document.querySelector('.fruta');
const todas = document.querySelectorAll('.fruta');
// todas es recorrible con forEach
todas.forEach(function (el) {
console.log(el.textContent);
});
🧩 ¿Lo entendiste? · Completa el código
Completa con el método correcto en cada espacio.
document.('#resultado');
document.('.fruta');
✅ La pseudo-clase :checked
Los selectores CSS también incluyen pseudo-clases, como :checked, que selecciona checkboxes o radios marcados en este momento. Por ejemplo document.querySelectorAll(".gusta:checked") devuelve solo los checkboxes con clase "gusta" que estén tildados.
Practica abajo: vas a combinar querySelector para leer texto y :checked para contar cuántos checkboxes están marcados.
Leer, escribir y decorar contenido
Una vez que encontraste un elemento, ¿qué puedes hacer con él? Leerlo o cambiarlo (textContent, innerHTML) y cambiar su apariencia con clases (classList).
📝 textContent vs innerHTML
elemento.textContent lee o escribe el texto plano de un elemento. Si le asignas etiquetas HTML, NO se interpretan: aparecen tal cual, como texto.
elemento.innerHTML lee o escribe interpretando el HTML: si le asignas "<strong>hola</strong>", el navegador va a mostrar "hola" en negrita de verdad.
innerHTML viene de otra persona (algo que escribió un usuario) y no lo revisaste, podría meter una etiqueta <script> peligrosa. Regla: texto plano → textContent; HTML que tú controlas → innerHTML.🧩 ¿Lo entendiste? · Practica
🎨 classList: add y remove
Cada elemento tiene una propiedad classList para manejar sus clases CSS. Los métodos más usados: classList.add("clase") y classList.remove("clase").
Esta es la técnica central para dar feedback visual: agregar la clase correcto (verde) o incorrecto (roja) según el resultado de una acción — exactamente lo que vas a usar para corregir actividades en el Recurso 2.
classList como un set de etiquetas. .add() y .remove() se llaman igual que en los sets de Python y hacen lo mismo.caja.classList.add('correcto');
caja.classList.remove('incorrecto');
caja.classList.toggle('activa'); // la agrega si no está, la saca si está
caja.classList.contains('correcto'); // true o false
🧩 ¿Lo entendiste? · Practica
Crear elementos y armar texto
Hasta ahora trabajaste con elementos que ya existían. Ahora vas a crear elementos nuevos desde código, y a armar los textos que les pones adentro de una forma más prolija.
🧱 createElement, appendChild y remove
document.createElement("li") crea un elemento nuevo en memoria (todavía no se ve en la página). Le puedes poner texto con textContent antes de mostrarlo.
padre.appendChild(elemento) lo agrega como último hijo de "padre", y ahí aparece en pantalla. elemento.remove() lo saca del DOM directamente.
createElement es armar un objeto nuevo (todavía no está en ninguna lista); appendChild es como lista.append(objeto); .remove() es sacar un elemento de la lista. Acá la "lista" es visual: es la página misma.const nuevo = document.createElement('li');
nuevo.textContent = 'Nueva tarea';
lista.appendChild(nuevo);
tareaVieja.remove();
🧩 ¿Lo entendiste? · Practica
🧩 Template literals (backticks)
Un template literal se escribe con comillas invertidas (`) en vez de comillas simples o dobles. Dentro, insertas el valor de una variable con ${variable}.
También puedes poner expresiones dentro de ${ }, no solo variables sueltas: por ejemplo `Doble: ${puntos * 2}`.
f"Hola {nombre}", en JS escribes `Hola ${nombre}` — mismo concepto, distinta letra inicial.| Con + | Con template literal |
|---|---|
"Hola " + nombre + "!" | `Hola ${nombre}!` |
"Puntos: " + (p*2) | `Puntos: ${p * 2}` |
🧩 ¿Lo entendiste? · Practica
Práctica integrada
Una misión chica que combina todo lo de este recurso: seleccionar, leer/escribir contenido, clases y crear elementos con template literals.
🎯 Misión: tarjeta de perfil interactiva
Tienes una tarjeta de estudiante con un botón para agregar una habilidad y un botón para marcarla como favorita. Completa el código para que funcione de punta a punta.
- Leer el nombre y el puntaje con
querySelectory armar el saludo con un template literal. - Agregar una nueva habilidad a la lista con
createElement+appendChild. - Marcar la tarjeta como favorita con
classListcuando se hace clic en la estrella.
Glosario
Todos los términos de este recurso, para repasar. Toca una tarjeta para girarla y ver la definición.
No encontré ningún término con esa búsqueda.