Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
83 lines (69 loc) · 2.49 KB
/
Copy pathscript.js
File metadata and controls
83 lines (69 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Select DOM elements
const taskTitleInput = document.getElementById('task-title');
const taskDescInput = document.getElementById('task-desc');
const addTaskBtn = document.getElementById('add-task-btn');
const taskList = document.getElementById('task-list');
// Load tasks from LocalStorage
let tasks = JSON.parse(localStorage.getItem('tasks')) || [];
// Render tasks
function renderTasks() {
taskList.innerHTML = '';
tasks.forEach((task, index) => {
const taskItem = document.createElement('li');
taskItem.classList.add('task-item');
if (task.completed) taskItem.classList.add('completed');
taskItem.innerHTML = `
<div class="task-content">
<h3>${task.title}</h3>
<p>${task.description}</p>
</div>
<div class="task-actions">
<button class="complete-btn">${task.completed ? 'Undo' : 'Complete'}</button>
<button class="edit-btn">Edit</button>
<button class="delete-btn">Delete</button>
</div>
`;
// Add event listeners for buttons
taskItem.querySelector('.complete-btn').addEventListener('click', () => toggleComplete(index));
taskItem.querySelector('.edit-btn').addEventListener('click', () => editTask(index));
taskItem.querySelector('.delete-btn').addEventListener('click', () => deleteTask(index));
taskList.appendChild(taskItem);
});
// Save tasks to LocalStorage
localStorage.setItem('tasks', JSON.stringify(tasks));
}
// Add a new task
function addTask() {
const title = taskTitleInput.value.trim();
const description = taskDescInput.value.trim();
if (title === '') {
alert('Task title is required!');
return;
}
tasks.push({ title, description, completed: false });
taskTitleInput.value = '';
taskDescInput.value = '';
renderTasks();
}
// Toggle task completion
function toggleComplete(index) {
tasks[index].completed = !tasks[index].completed;
renderTasks();
}
// Edit a task
function editTask(index) {
const task = tasks[index];
taskTitleInput.value = task.title;
taskDescInput.value = task.description;
tasks.splice(index, 1);
renderTasks();
}
// Delete a task
function deleteTask(index) {
tasks.splice(index, 1);
renderTasks();
}
// Event listeners
addTaskBtn.addEventListener('click', addTask);
// Initial render
renderTasks();