-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
71 lines (58 loc) · 1.84 KB
/
Copy pathapp.js
File metadata and controls
71 lines (58 loc) · 1.84 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
const form = document.querySelector("form");
const input = document.querySelector("input");
const taskList = document.querySelector(".task-list");
const progress = document.getElementById("progress");
const numbers = document.getElementById("numbers");
let totalTasks = 0;
let completedTasks = 0;
// Update progress bar & numbers
function updateStats() {
numbers.textContent = `${completedTasks}/${totalTasks}`;
if (totalTasks === 0) {
progress.style.width = "0%";
} else {
const percent = (completedTasks / totalTasks) * 100;
progress.style.width = percent + "%";
}
}
// Add task
form.addEventListener("submit", function (e) {
e.preventDefault();
const taskText = input.value.trim();
if (taskText === "") return;
totalTasks++;
const li = document.createElement("li");
li.textContent = taskText;
// Complete button
const completeBtn = document.createElement("button");
completeBtn.textContent = "✔";
completeBtn.style.marginLeft = "10px";
// Delete button
const deleteBtn = document.createElement("button");
deleteBtn.textContent = "✖";
deleteBtn.style.marginLeft = "5px";
li.appendChild(completeBtn);
li.appendChild(deleteBtn);
taskList.appendChild(li);
input.value = "";
updateStats();
// Mark complete
completeBtn.addEventListener("click", function () {
if (!li.classList.contains("done")) {
li.classList.add("done");
li.style.textDecoration = "line-through";
li.style.opacity = "0.6";
completedTasks++;
updateStats();
}
});
// Delete task
deleteBtn.addEventListener("click", function () {
if (li.classList.contains("done")) {
completedTasks--;
}
totalTasks--;
li.remove();
updateStats();
});
});