-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
80 lines (72 loc) · 2.03 KB
/
script.js
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
// Define UI Element
const form = document.getElementById("form");
const newTask = document.getElementById("new-task");
const filter = document.getElementById("task-filter");
const taskLists = document.getElementById("tasks-list");
const clearTask = document.getElementById("clear-task");
// event Listener
form.addEventListener("submit", addTask);
taskLists.addEventListener("click", removeTask);
clearTask.addEventListener("click", displayTaskClear);
filter.addEventListener("keyup", filterTask);
document.addEventListener("DOMContentLoaded", render);
// Define variable
let tasks = [];
// render tasks list
function render() {
if (localStorage.getItem("tasks")) {
tasks = JSON.parse(localStorage.getItem("tasks"));
}
let items = "";
tasks.forEach((item) => {
items += `<li class="fs-20 ellipsis border-radius-s capitalize">${item} <a href="#" class="btn">X</a></li>`;
});
taskLists.innerHTML = items;
}
// add task
function addTask(e) {
e.preventDefault();
if (newTask.value) {
tasks.push(newTask.value);
newTask.value = "";
storeTaskInLocalStorage();
render();
} else {
confirm("Add new Task");
}
}
// remove task
function removeTask(e) {
if (e.target.hasAttribute("href")) {
if (confirm("Are you sure delete this item")) {
let item = e.target.parentElement.textContent.replace(" X", "");
let index = tasks.indexOf(item);
tasks.splice(index, 1);
storeTaskInLocalStorage();
render();
filter.value = "";
}
}
}
// clear display task
function displayTaskClear() {
tasks = [];
localStorage.clear();
render();
}
// filter task
function filterTask(e) {
let search = e.target.value.toLowerCase();
document.querySelectorAll("li").forEach((item) => {
let text = item.firstChild.textContent;
if (text.toLowerCase().indexOf(search) !== -1) {
item.style.display = "flex";
} else {
item.style.display = "none";
}
// console.log(text);
});
}
function storeTaskInLocalStorage() {
localStorage.setItem("tasks", JSON.stringify(tasks));
}