Ejercicio: El DOM: leer y cambiar la página
Objetivo
Manipular una página real: cambiar textos, crear y eliminar elementos, alternar clases y vaciar una lista, comprobando los resultados directamente en el DOM.
La página de partida
Esta es la página sobre la que trabaja tu código. No la modifiques: escribe solo el JavaScript.
<h1 id="titulo">Mi lista</h1>
<p id="mensaje"></p>
<ul id="lista">
<li>Primero</li>
<li>Segundo</li>
</ul>
<div id="caja" class="caja">Una caja</div>
Pasos
Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.
💡 Pista 1: añadir al final
const li = document.createElement("li"); li.textContent = texto; document.getElementById("lista").append(li);
💡 Pista 2: quitar el último sin error
const ultimo = lista.lastElementChild; if (ultimo) ultimo.remove();. Si no hay hijos, lastElementChild es null y por eso se comprueba antes.
🔎 Comprueba tu trabajo
Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.
✅ Ver una solución de ejemplo
Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.
function cambiarTitulo(texto) {
document.getElementById("titulo").textContent = texto;
}
function agregarItem(texto) {
const li = document.createElement("li");
li.textContent = texto;
document.getElementById("lista").append(li);
}
function quitarUltimo() {
const ultimo = document.getElementById("lista").lastElementChild;
if (ultimo) ultimo.remove();
}
function marcarPrimero() {
const primero = document.querySelector("#lista li");
if (primero) primero.classList.add("hecho");
}
function contar() {
const n = document.querySelectorAll("#lista li").length;
document.getElementById("mensaje").textContent = `Hay ${n} elementos`;
return n;
}
function alternarCaja() {
document.getElementById("caja").classList.toggle("activa");
}
function limpiar() {
document.getElementById("lista").replaceChildren();
}
💡 🏁 Reto extra (opcional)
Escribe renderizar(tareas) que reciba un array de textos y reconstruya la lista completa dentro de #lista, escapando el contenido (usando textContent, no innerHTML). Pruébala con un texto que contenga <b>.