Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
97 lines (73 loc) · 2.02 KB
/
Copy pathscript.js
File metadata and controls
97 lines (73 loc) · 2.02 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
const form = document.querySelector('.todo-form');
const input = document.querySelector('.todo-input')
const ul = document.querySelector('.todo-items')
let todos = []
form.addEventListener('submit',function(event){
event.preventDefault()
addTodo(input.value)
})
function addTodo(item){
if(item !==''){
const todo = {
id: Date.now(),
name:item,
completed:false
}
todos.push(todo)
addToLocalStorage(todos)
input.value = ''
}
}
function renderTodos(todos){
ul.innerHTML = ''
todos.forEach(function(item){
const checked = item.completed ? 'checked':null;
const li = document.createElement('li')
li.setAttribute('class','item')
li.setAttribute('data-key',item.id);
if(item.completed === true){
li.classList.add('checked')
}
li.innerHTML = `<input type="checkbox" class="checkbox" ${checked}>
${item.name} <button class="delete-button">X</button>`;
ul.append(li)
})
}
function addToLocalStorage(todos){
localStorage.setItem('todos',JSON.stringify(todos));
renderTodos(todos)
}
function getFromLocalStorage(){
const reference = localStorage.getItem('todos')
if(reference){
todos = JSON.parse(reference)
renderTodos(todos)
}
}
getFromLocalStorage()
ul.addEventListener('click',function(e){
e.preventDefault()
if(e.target.type === 'checkbox'){
toggle(e.target.parentElement.getAttribute('data-key'))
console.log(e.target)
}
if(e.target.classList.contains('delete-button')){
deleteTodo(e.target.parentElement.getAttribute('data-key'))
}
})
function toggle(id){
todos.forEach(function(item){
if(item.id == id){
item.completed = !item.completed
}
})
addToLocalStorage(todos)
}
function deleteTodo(id){
todos = todos.filter(function(item){
return item.id !=id
})
// update localStorage
addToLocalStorage(todos)
}
getFromLocalStorage()