Untitled
unknown
plain_text
a year ago
2.4 kB
10
Indexable
// Factory function for creating tasks
function createTask(description) {
return {
id: Math.random().toString(36).substr(2, 9),
description: description,
isCompleted: false
};
}
// DOM Elements
const todoForm = document.getElementById('todoForm');
const todoInput = document.getElementById('todoInput');
const taskList = document.getElementById('taskList');
const errorMessage = document.getElementById('error-message');
// Local Storage Key
const TASKS_STORAGE_KEY = 'tasks';
// Initialize tasks array
let tasks = JSON.parse(localStorage.getItem(TASKS_STORAGE_KEY)) || [];
// Display tasks on load
window.addEventListener('DOMContentLoaded', renderTasks);
// Event listener for form submission
todoForm.addEventListener('submit', (e) => {
e.preventDefault();
const taskDescription = todoInput.value.trim();
// Validate input with RegEx (At least 3 characters and alphanumeric)
const regex = /^[a-zA-Z0-9 ]{3,}$/;
if (!regex.test(taskDescription)) {
errorMessage.textContent = 'Task must be at least 3 characters and alphanumeric.';
return;
}
errorMessage.textContent = ''; // Clear error message
// Create new task
const newTask = createTask(taskDescription);
tasks.push(newTask);
// Save to localStorage
saveTasks();
// Clear the input
todoInput.value = '';
// Render tasks
renderTasks();
});
// Function to render tasks on the page
function renderTasks() {
taskList.innerHTML = ''; // Clear existing tasks
tasks.forEach(task => {
const taskCard = document.createElement('div');
taskCard.classList.add('task-card');
const taskDescription = document.createElement('p');
taskDescription.textContent = task.description;
const deleteButton = document.createElement('button');
deleteButton.textContent = 'Delete';
deleteButton.addEventListener('click', () => deleteTask(task.id));
taskCard.appendChild(taskDescription);
taskCard.appendChild(deleteButton);
taskList.appendChild(taskCard);
});
}
// Function to delete a task
function deleteTask(id) {
tasks = tasks.filter(task => task.id !== id);
saveTasks();
renderTasks();
}
// Function to save tasks to localStorage
function saveTasks() {
localStorage.setItem(TASKS_STORAGE_KEY, JSON.stringify(tasks));
}
Editor is loading...
Leave a Comment