No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aún hay más por aprender

26/27
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Excelente curso diego! La explicacion estuvo excelente, y el proyecto final tambien. Antes de concluir, quisiera compartir un proyecto "secreto" que estoy haciendo. Tiene que ver con el to-do pero a una escala mas grande (lo llevo haciendo desde mucho antes del curso, aun falta algunas cosas) El nombre (temporal claro) es un super todo-list, con notas, manejadores de eventos, personalizar tu perfil y todo, pero una imagen vale mas que mil palabras asi que, aca lo enseno! ![](https://static.platzi.com/media/user_upload/image-d2096c10-e973-4df6-b55f-6254cebf4a81.jpg)
Buen curso, muy claro el profe en todo. Hay un solo punto, el orden del repo..... 9/10
El curso está excelente, solo falta ordenar un poco el repositorio y aclarar algunos fragmentos de código. Les comparto una alternativa más que me parecio más sencilla: actualizo `localStorage` con la nueva tarea y luego renderizo la lista completa, asegurando que el almacenamiento y la interfaz estén sincronizados. En contraste, el enfoque del profesor renderiza la tarea primero y luego actualiza `localStorage`, lo que puede ser más propenso a inconsistencias y generar más código. ```js const taskForm = document.getElementById("task-form"); const taskList = document.getElementById("task-list"); const taskInput = document.getElementById("task-input"); let tasks = JSON.parse(localStorage.getItem("tasks")) || []; const toggleThemeBtn = document.getElementById("toggle-theme-btn"); // Función para renderizar tareas y asignar eventos function renderTasks() { taskList.innerHTML = ''; // Limpiar la lista de tareas tasks.forEach(task => { const li = document.createElement('li'); li.innerHTML = ` ${task} ✏️ `; taskList.appendChild(li); // Asignar eventos de eliminación li.querySelector('.delete-btn').addEventListener('click', function() { const taskText = li.childNodes[0].textContent.trim(); tasks = tasks.filter(t => t !== taskText); localStorage.setItem('tasks', JSON.stringify(tasks)); renderTasks(); // Re-renderizar la lista actualizada }); // Asignar eventos de edición li.querySelector('.edit-btn').addEventListener('click', function() { const newTask = prompt("Edit your task:", task); if (newTask !== null) { const index = tasks.indexOf(task); tasks[index] = newTask; localStorage.setItem('tasks', JSON.stringify(tasks)); renderTasks(); // Re-renderizar la lista actualizada } }); }); }; window.addEventListener('load', () => { const savedTheme = localStorage.getItem('theme'); if (savedTheme === 'dark') { document.body.classList.add('dark-theme'); } else { document.body.classList.remove('dark-theme'); } }); // Añade un evento 'click' al botón para alternar la clase 'dark-theme' toggleThemeBtn.addEventListener("click", () => { // Alterna la clase 'dark-theme' en el <body> document.body.classList.toggle("dark-theme"); // Guarda la preferencia del tema en localStorage localStorage.setItem('theme', document.body.classList.contains("dark-theme") ? 'dark' : 'light'); }); // Añade un evento 'submit' al formulario de tareas taskForm.addEventListener("submit", (event) => { event.preventDefault(); // Previene que el formulario se envíe y recargue la página const task = taskInput.value; // Obtiene el valor del input tasks.push(task); // Agrega la nueva tarea a la lista localStorage.setItem('tasks', JSON.stringify(tasks)); // Guarda la lista actualizada en localStorage taskInput.value = ''; // Limpia el input renderTasks(); // Re-renderiza la lista actualizada }); // Inicializar el renderizado de tareas al cargar la página renderTasks(); ```Le doy crédito a ChatGpt por los comentarios en mi código.
faltaron algunos fragmentos del curso, pero estuvo bueno, seria bueno que lo completaran bien