Contenido del curso
Seleccionando y Accesando a Elementos del DOM
Manipulando Elementos del DOM
- 6

Atributos y Propiedades en HTML y su Manipulación con JavaScript
07:39 min - 7

Modificar texto en HTML con JavaScript
04:49 min - 8

Modificar Estilos CSS con JavaScript: Propiedad Style y ClassName
11:30 min - 9

Uso de classList para Manipular Clases en Elementos HTML
07:37 min - 10

Manipulación del DOM con innerHTML e InsertAdjacentHTML
09:47 min - 11

Agregar elementos HTML sin reemplazar contenido existente
05:17 min - 12

Creación y Manipulación de Elementos DOM con createElement
13:28 min - 13

remove() vs removeChild() en el DOM
05:42 min - 14

Clonación y Reemplazo de Elementos en JavaScript
12:47 min
Manipulando Eventos en el DOM
- 15

Eventos y Flujo en Programación Web: Capturing y Bubbling
05:03 min - 16

Eventos del mouse y clic en JavaScript
11:46 min - 17

Qué es event.target y cómo usarlo
07:35 min - 18

Validación de Formularios con JavaScript: Prevenir Comportamiento por Defecto
10:06 min - 19

Delegation Pattern en JavaScript: Mejora de Eventos Click en Listas
09:29 min
Asincronía en JavaScript
Creando un Administrador de Tareas
- 21

Creación de un Task Manager con Persistencia usando Local Storage
09:01 min - 22

Editar y borrar tareas con delegación de eventos
13:35 min - 23

Persistencia de Datos con Local Storage en Tareas Web
15:17 min - 24

Guardado y edición de tareas en local storage con JavaScript
10:59 min - 25

Manejo de Errores en Local Storage para Tareas Dinámicas
Viendo ahora - 26

Persistencia de tema dark/light con localStorage
07:18 min - 27

Creación de Páginas Web Dinámicas con JavaScript
01:28 min
Manejo de Errores en Local Storage para Tareas Dinámicas
Resumen
Cuando trabajas con un task manager dinámico y notas que cada vez que editas o refrescas la página aparecen tareas duplicadas llamadas "task contents", estás frente a un bug muy común relacionado con código hardcodeado en HTML y la forma en que se actualiza el local storage. Entender por qué ocurre y cómo resolverlo es fundamental para que tu aplicación funcione correctamente.
¿Por qué aparecen tareas duplicadas al editar y refrescar?
El problema tiene su origen en dos elementos que entran en conflicto. Por un lado, existe código hardcodeado en el HTML [0:10] que incluye una tarea de ejemplo para que, al iniciar el task manager, al menos haya un elemento visible. Por otro lado, la función de update local storage [1:04] realiza un escaneo de todas las etiquetas <li> que existen en el DOM en ese momento y guarda esa "radiografía actual" en local storage.
El conflicto funciona así:
- Al editar una tarea, la función de update copia el texto de todos los
<li>actuales, incluyendo el que está hardcodeado. - Cuando haces refresh, el HTML vuelve a cargar el elemento hardcodeado.
- Además, local storage inyecta las tareas que tenía guardadas.
- El resultado: la tarea hardcodeada se duplica con cada ciclo de edición y refresco.
Este ciclo se repite indefinidamente. Cada vez que editas, la radiografía crece porque incluye tanto el elemento fijo del HTML como las tareas almacenadas previamente [2:10].
¿Qué significa código hardcodeado en este contexto?
Cuando se dice que algo está hardcodeado, significa que el contenido no se genera de forma dinámica mediante JavaScript, sino que está escrito directamente en el archivo HTML. En este caso, la tarea "task contents" existía como ejemplo visual estático. Al pasar a una página dinámica donde las tareas se crean y gestionan con JavaScript, ese elemento fijo ya no tiene sentido y genera conflictos.
¿Cómo se corrige el bug de local storage?
La solución es sencilla y directa [2:40]:
- Eliminar el código hardcodeado del HTML.
- Dejar únicamente el contenedor vacío donde se inyectarán las tareas de forma dinámica.
- Borrar los registros duplicados de "task contents" que quedaron almacenados en local storage.
Una vez que el contenedor está limpio, la radiografía inicial solo contiene las tareas reales que el usuario ha creado. Por ejemplo, si tienes "tarea uno" y "tarea dos modificada", esas serán las únicas que el escaneo de <li> capturará [3:05].
¿Cómo verificar que el problema quedó resuelto?
Después de aplicar la corrección, puedes comprobarlo con estos pasos:
- Edita cualquier tarea existente y guarda los cambios.
- Refresca la página con refresh.
- Revisa que solo aparezcan las tareas que creaste, sin duplicados.
- Inspecciona el contenido de local storage en las herramientas de desarrollo del navegador para confirmar que no hay entradas repetidas.
Al refrescar [3:25], el escaneo ahora solo detecta los <li> actuales (los que realmente importan) y eso es exactamente lo que se guarda. Ya no hay elemento hardcodeado que se sume a la lista.
Este tipo de bug es un recordatorio importante: cuando transicionas de una página estática a una dinámica, asegúrate de limpiar todo el contenido de ejemplo que ya no forma parte del flujo de datos de tu aplicación. Si te ha pasado algo similar o tienes otra forma de resolverlo, comparte tu experiencia.