todo-test / script.js
akhaliq's picture
akhaliq HF Staff
Upload folder using huggingface_hub
1c18774 verified
Raw
History Blame Contribute Delete
3.13 kB
document.addEventListener('DOMContentLoaded', function() {
const todoInput = document.getElementById('todoInput');
const addBtn = document.getElementById('addBtn');
const todoList = document.getElementById('todoList');
// Load todos from localStorage
let todos = JSON.parse(localStorage.getItem('todos')) || [];
// Render initial todos
renderTodos();
// Add event listener for adding new todo
addBtn.addEventListener('click', addTodo);
todoInput.addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
addTodo();
}
});
function addTodo() {
const todoText = todoInput.value.trim();
if (todoText === '') {
alert('Please enter a task!');
return;
}
const newTodo = {
id: Date.now(),
text: todoText,
completed: false
};
todos.push(newTodo);
saveTodos();
renderTodos();
// Clear input field
todoInput.value = '';
todoInput.focus();
}
function deleteTodo(id) {
todos = todos.filter(todo => todo.id !== id);
saveTodos();
renderTodos();
}
function toggleComplete(id) {
todos = todos.map(todo => {
if (todo.id === id) {
return { ...todo, completed: !todo.completed };
}
return todo;
});
saveTodos();
renderTodos();
}
function renderTodos() {
todoList.innerHTML = '';
if (todos.length === 0) {
const emptyMessage = document.createElement('li');
emptyMessage.className = 'empty-message';
emptyMessage.textContent = 'No tasks yet. Add one above!';
todoList.appendChild(emptyMessage);
return;
}
todos.forEach(todo => {
const todoItem = document.createElement('li');
todoItem.className = `todo-item ${todo.completed ? 'completed' : ''}`;
const todoText = document.createElement('span');
todoText.className = 'todo-text';
todoText.textContent = todo.text;
const completeBtn = document.createElement('button');
completeBtn.className = 'complete-btn';
completeBtn.textContent = todo.completed ? 'Undo' : 'Complete';
completeBtn.addEventListener('click', () => toggleComplete(todo.id));
const deleteBtn = document.createElement('button');
deleteBtn.className = 'delete-btn';
deleteBtn.textContent = 'Delete';
deleteBtn.addEventListener('click', () => deleteTodo(todo.id));
todoItem.appendChild(completeBtn);
todoItem.appendChild(todoText);
todoItem.appendChild(deleteBtn);
todoList.appendChild(todoItem);
});
}
function saveTodos() {
localStorage.setItem('todos', JSON.stringify(todos));
}
});