Saltar al contenido
Curso de JavaScript
Todos los cursos

Ejercicio: El DOM: leer y cambiar la página

  • ⏱ 40 minutos
  • 📶 Nivel: principiante

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.

pagina.html
<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>
▶ Prueba tu código aquí (opcional)
Consola

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.

    app.js
    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>.