-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo.js
82 lines (65 loc) · 1.89 KB
/
todo.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
const form = document.querySelector(".js-todoForm");
const todoInput = form.querySelector("input");
const ul = document.querySelector(".js-todoList");
let todos = [];
const LS_TODO = "toDos";
function removeTodos(event) {
const removeTarget = event.target.parentNode;
const cleanedTodos = todos.filter(function(t) {
return t.id !== parseInt(removeTarget.id);
});
todos = cleanedTodos;
ul.removeChild(removeTarget);
saveTodos();
};
function showTodos(todo) {
const li = document.createElement("li");
const span = document.createElement("span");
const btn = document.createElement("button");
btn.addEventListener("click", removeTodos);
btn.classList.add("buttons");
btn.innerText = "X";
li.id = todo.id;
span.innerText = todo.todo;
li.appendChild(span);
li.appendChild(btn);
ul.appendChild(li);
};
function saveTodos() {
const stringTodo = JSON.stringify(todos);
localStorage.setItem(LS_TODO, stringTodo);
};
function submitListener(event) {
event.preventDefault();
let newId, todo;
if(todoInput.value) {
todo = todoInput.value;
}
if(todo) {
if(todos.length > 0) {
newId = todos[todos.length - 1].id + 1;
} else {
newId = 0;
}
const todoObj = {
todo : todo,
id : newId
};
todos.push(todoObj);
saveTodos();
showTodos(todoObj);
todoInput.value = "";
}
};
function init() {
form.addEventListener("submit", submitListener);
const loadedTodo = localStorage.getItem(LS_TODO);
if(loadedTodo) {
const parsedTodo = JSON.parse(loadedTodo);
todos = parsedTodo;
todos.forEach(function(todo) {
showTodos(todo);
});
}
};
init();