Spaces:
Running
Running
| const todoInput = document.getElementById('todoInput'); | |
| const addBtn = document.getElementById('addBtn'); | |
| const todoList = document.getElementById('todoList'); | |
| let todos = JSON.parse(localStorage.getItem('todos')) || []; | |
| function saveTodos() { | |
| localStorage.setItem('todos', JSON.stringify(todos)); | |
| } | |
| function renderTodos() { | |
| todoList.innerHTML = ''; | |
| todos.forEach((todo, index) => { | |
| const li = document.createElement('li'); | |
| li.className = `todo-item ${todo.completed ? 'completed' : ''}`; | |
| li.innerHTML = ` | |
| <input type="checkbox" class="todo-checkbox" ${todo.completed ? 'checked' : ''} onchange="toggleTodo(${index})"> | |
| <span class="todo-text">${todo.text}</span> | |
| <button class="delete-btn" onclick="deleteTodo(${index})">Delete</button> | |
| `; | |
| todoList.appendChild(li); | |
| }); | |
| } | |
| function addTodo() { | |
| const text = todoInput.value.trim(); | |
| if (text) { | |
| todos.push({ text, completed: false }); | |
| saveTodos(); | |
| renderTodos(); | |
| todoInput.value = ''; | |
| } | |
| } | |
| function toggleTodo(index) { | |
| todos[index].completed = !todos[index].completed; | |
| saveTodos(); | |
| renderTodos(); | |
| } | |
| function deleteTodo(index) { | |
| todos.splice(index, 1); | |
| saveTodos(); | |
| renderTodos(); | |
| } | |
| addBtn.addEventListener('click', addTodo); | |
| todoInput.addEventListener('keypress', (e) => { | |
| if (e.key === 'Enter') addTodo(); | |
| }); | |
| renderTodos(); |