-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
96 lines (82 loc) · 2.32 KB
/
main.js
File metadata and controls
96 lines (82 loc) · 2.32 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
let input = document.querySelector(".form .input");
let addBtn = document.querySelector(".form .add");
let tasksContainer = document.querySelector(".container .tasks");
// Get tasks from local storage if they exist, store them in an array, and show them.
let tasksArr = [];
if (window.localStorage.getItem("tasks")) {
tasksArr = JSON.parse(localStorage.getItem("tasks"));
updateTasks();
}
// add task button action
addBtn.addEventListener("click", function () {
if (input.value) {
let newTask = createTask(generateUniqueId(), input.value);
saveTask(newTask);
input.value = "";
input.focus();
}
});
// Add new task button clicks if pressing enter in keyboard
input.addEventListener("keydown", (event) => {
if (event.code === "Enter") addBtn.click();
});
// create a task element
function createTask(id, value) {
// create task container
let task = document.createElement("div");
task.className = "task";
task.id = id;
// create task paragraph
let p = document.createElement("p");
let taskName = document.createTextNode(value);
p.appendChild(taskName);
task.appendChild(p);
// create delete button
let deleteBtn = document.createElement("button");
let deleteText = document.createTextNode("Delete");
deleteBtn.appendChild(deleteText);
// Add delete button action
deleteBtn.addEventListener("click", function () {
deleteTask(task.id);
});
// append button to task
task.appendChild(deleteBtn);
// return the task
return task;
}
// Save the task in local storage
function saveTask(task) {
let newTask = {
id: task.id,
title: task.firstElementChild.textContent,
};
tasksArr.push(newTask);
saveInLocal();
updateTasks();
}
// Generate a unique ID
function generateUniqueId() {
return Date.now();
}
// delete specific task
function deleteTask(taskID) {
for (let i = 0; i < tasksArr.length; i++) {
if (tasksArr[i].id === taskID) {
tasksArr.splice(i, 1);
saveInLocal();
updateTasks();
break;
}
}
}
// Append all tasks to task Container in HTML
function updateTasks() {
tasksContainer.innerHTML = "";
for (let i = 0; i < tasksArr.length; i++) {
tasksContainer.appendChild(createTask(tasksArr[i].id, tasksArr[i].title));
}
}
// Save to local Storage
function saveInLocal() {
window.localStorage.setItem("tasks", JSON.stringify(tasksArr));
}