-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
122 lines (93 loc) · 3.96 KB
/
index.js
File metadata and controls
122 lines (93 loc) · 3.96 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
115
116
117
118
119
120
const taskInput = document.getElementById('new-task-input')
const addTaskBtn = document.getElementById('add-task-btn')
const taskListContainer = document.getElementById('task-list-container')
const taskList = document.getElementById('task-list')
// localstorage initiate variable
let savedData
// variable to serialize localstorage keys
let count = 0
window.onload = function () {
if (savedData !== null) {
for (let i = 0; i < localStorage.length; i++) {
// console.log(localStorage.key(i))
let key = localStorage.key(i)
// create and append all new elements with localStorage
// data
const taskItem = document.createElement('li')
taskItem.textContent = localStorage.getItem(key)
taskItem.className = 'task-item'
const btnContainer = document.createElement('div')
btnContainer.className = 'btn-container'
taskItem.append(btnContainer)
const completeBtn = document.createElement('button')
completeBtn.className = 'complete-btn'
completeBtn.innerText = 'COMPLETED'
btnContainer.append(completeBtn)
const deleteBtn = document.createElement('button')
deleteBtn.className = 'delete-btn'
deleteBtn.innerText = 'DELETE'
btnContainer.append(deleteBtn)
taskList.append(taskItem)
// button event listeners to mark as complete and remove data tasks
completeBtn.addEventListener('click', function () {
taskItem.style.textDecoration = 'line-through'
completeBtn.style.backgroundColor = '#f77f00'
})
deleteBtn.addEventListener('click', function () {
localStorage.removeItem(key)
taskList.removeChild(taskItem)
})
}
} else {
savedData = null
console.log(`Data local storage is ${savedData}`)
}
}
// create task element items
function createTask(e) {
e.preventDefault()
// clear taskList element in way to not duplicate with
// the rendered elements onload
taskList.innerHTML = ''
if (taskInput.value) {
savedData = localStorage.setItem('task' + count++, taskInput.value)
// console.log(localStorage)
for (let i = 0; i < localStorage.length; i++) {
// console.log(localStorage.key(i))
let key = localStorage.key(i)
// create and append all new elements with localStorage
// data
const taskItem = document.createElement('li')
taskItem.textContent = localStorage.getItem(key)
taskItem.className = 'task-item'
const btnContainer = document.createElement('div')
btnContainer.className = 'btn-container'
taskItem.append(btnContainer)
const completeBtn = document.createElement('button')
completeBtn.className = 'complete-btn'
completeBtn.innerText = 'COMPLETED'
btnContainer.append(completeBtn)
const deleteBtn = document.createElement('button')
deleteBtn.className = 'delete-btn'
deleteBtn.innerText = 'DELETE'
btnContainer.append(deleteBtn)
taskList.append(taskItem)
// buttons event listeners to mark completed task
// and delete tasks from localstorage
completeBtn.addEventListener('click', function () {
taskItem.style.textDecoration = 'line-through'
completeBtn.style.backgroundColor = 'lightseagreen'
})
deleteBtn.addEventListener('click', function () {
localStorage.removeItem(key)
taskList.removeChild(taskItem)
})
}
} else {
alert('Please add a task.')
}
// clear input field value
taskInput.value = ''
}
// event listener to create item with input text
addTaskBtn.addEventListener('click', createTask)