-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
114 lines (91 loc) · 2.86 KB
/
script.js
File metadata and controls
114 lines (91 loc) · 2.86 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
const addTaskBtn = document.getElementById("addTaskBtn");
const taskInput = document.getElementById("taskInput");
const taskList = document.getElementById("taskList");
const allBtn = document.getElementById("allBtn");
const completedBtn = document.getElementById("completedBtn");
const pendingBtn = document.getElementById("pendingBtn");
let currentFilter = "all";
// Load tasks on page load
window.onload = function () {
renderTasks();
};
addTaskBtn.addEventListener("click", function () {
const taskText = taskInput.value;
if (taskText === "") {
alert("Please enter a task");
return;
}
saveTask(taskText, false);
taskInput.value = "";
renderTasks();
});
allBtn.addEventListener("click", function () {
currentFilter = "all";
renderTasks();
});
completedBtn.addEventListener("click", function () {
currentFilter = "completed";
renderTasks();
});
pendingBtn.addEventListener("click", function () {
currentFilter = "pending";
renderTasks();
});
function renderTasks() {
taskList.innerHTML = "";
const tasks = JSON.parse(localStorage.getItem("tasks")) || [];
tasks
.filter(task => {
if (currentFilter === "completed") return task.completed;
if (currentFilter === "pending") return !task.completed;
return true;
})
.forEach(task => {
createTaskElement(task.text, task.completed);
});
}
function createTaskElement(taskText, isCompleted) {
const li = document.createElement("li");
const checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.checked = isCompleted;
const span = document.createElement("span");
span.textContent = taskText;
if (isCompleted) {
span.style.textDecoration = "line-through";
}
checkbox.addEventListener("change", function () {
updateTaskStatus(taskText, checkbox.checked);
renderTasks();
});
const deleteBtn = document.createElement("button");
deleteBtn.textContent = "Delete";
deleteBtn.addEventListener("click", function () {
removeTask(taskText);
renderTasks();
});
li.appendChild(checkbox);
li.appendChild(span);
li.appendChild(deleteBtn);
taskList.appendChild(li);
}
function saveTask(text, completed) {
const tasks = JSON.parse(localStorage.getItem("tasks")) || [];
tasks.push({ text: text, completed: completed });
localStorage.setItem("tasks", JSON.stringify(tasks));
}
function removeTask(taskText) {
let tasks = JSON.parse(localStorage.getItem("tasks")) || [];
tasks = tasks.filter(task => task.text !== taskText);
localStorage.setItem("tasks", JSON.stringify(tasks));
}
function updateTaskStatus(taskText, completedStatus) {
let tasks = JSON.parse(localStorage.getItem("tasks")) || [];
tasks = tasks.map(task => {
if (task.text === taskText) {
return { text: task.text, completed: completedStatus };
}
return task;
});
localStorage.setItem("tasks", JSON.stringify(tasks));
}