-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
169 lines (134 loc) · 3.6 KB
/
app.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
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
const form = document.querySelector("#task-form");
const taskList = document.querySelector('.collection');
const clearBtn = document.querySelector('button');
const taskInput = document.querySelector('#task');
const button = document.querySelector('.enter');
function inputLength(){
return taskInput.value.length;
}
function inputItem(){
return taskInput.value;
}
// eventlisteners
loadEvent();
function loadEvent(){
// DOM load eventlister
document.addEventListener('DOMContentLoaded', getTasks);
// add task event
form.addEventListener('submit', addTask)
// add list on click check button
button.addEventListener('click', addList)
// remove task event
clearBtn.addEventListener('click', clearTask)
}
// get task from local storage
function getTasks(){
let tasks;
if(localStorage.getItem('tasks') === null){
tasks = [];
}else{
tasks = JSON.parse(localStorage.getItem('tasks'));
}
tasks.forEach(function(task){
// create li element
const li = document.createElement('li')
// add class
li.className = 'collection-item';
// create textnode and append child
li.appendChild(document.createTextNode(task));
// create a new link element
const link = document.createElement('a');
// add class
link.className ='delete-item';
// add icon html
link.innerHTML = '<i class="fas fa-trash-alt"></i>';
// append the link to li
li.appendChild(link);
// append li to ul
taskList.appendChild(li);
function toggle(){
li.classList.toggle('done');
}
function removeTask(){
taskList.removeChild(li);
}
link.addEventListener('click', removeTask);
li.addEventListener('click', toggle);
removeTaskFromLocalStorage(taskList);
});
}
// Add Task
function addTask(k){
if(taskInput.value === ""){
alert('Please add a task');
}
// create li element
const li = document.createElement('li')
// add class
li.className = 'collection-item';
// create textnode and append child
li.appendChild(document.createTextNode(taskInput.value));
// create a new link element
const link = document.createElement('a');
// add class
link.className ='delete-item';
// add icon html
link.innerHTML = '<i class="fas fa-trash-alt"></i>';
// append the link to li
li.appendChild(link);
// append li to ul
taskList.appendChild(li);
// store in Local storage
storeTask(taskInput.value);
// clear input
taskInput.value = "";
// k.preventDefault;
function toggle(){
li.classList.toggle('done');
}
function removeTask(){
taskList.removeChild(li);
removeTaskFromLocalStorage(taskList);
}
link.addEventListener('click', removeTask)
li.addEventListener('click', toggle)
}
function storeTask(task){
let tasks;
if(localStorage.getItem('tasks') === null){
tasks = [];
}else{
tasks = JSON.parse(localStorage.getItem('tasks'))
}
tasks.push(task);
localStorage.setItem('tasks', JSON.stringify(tasks));
}
function clearTask(){
while(taskList.firstChild){
taskList.removeChild(taskList.firstChild)
}
clearTasksFromLocalStorage();
}
function addList(){
if(inputLength() > 0 && inputItem() != 8 ){
addTask();
}
}
//Remove from local storage
function removeTaskFromLocalStorage(taskItem){
let tasks;
if(localStorage.getItem('tasks') === null){
tasks = [];
}else{
tasks = JSON.parse(localStorage.getItem('tasks'));
}
tasks.forEach(function(task, index){
if(taskItem.textContent === task){
tasks.splice(index, 1)
}
});
localStorage.setItem('tasks', JSON.stringify(tasks));
}
function clearTasksFromLocalStorage(){
localStorage.clear();
}