https://taehyeon-smilestudy.tistory.com/27?category=1020508
[JavaScript] - To Do List 만들기①
ToDoList를 만들 때 꼭 되어야 하는 기능 1. 사용자가 값을 입력하고 새로고침을 했을 때 이전에 있던 값들을 불러올 수 있는가 2. 새로고침 후 사용자가 값을 입력할 때 기존에 있던 것에 덧씌워
taehyeon-smilestudy.tistory.com
다음은 ul의 하위 요소로 들어가는 li span button을 만들어 줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function createToDo(newToDo) {
const li = document.createElement("li");
li.id = newToDo.id;
//li의 id에는 submit함수에서 사용된 id를 넣어줍니다.
//(나중에 삭제하는 함수를 만들때 위치를 찾을수 있게 id값을 넣어줌)
const span = document.createElement("span");
const button = document.createElement("button");
span.innerText = newToDo.text;
button.innerText = "×";
li.appendChild(span);
li.appendChild(button);
//li의 자식노드로 span과 button을 추가합니다.
todoListUl.appendChild(li);
//ul의 자식노드로 li를 추가합니다.
}
|
cs |
createToDo의 매개변수 newToDo는 submitToDo의 newToDoOBJ를 받아옵니다.
li의 id에는 newToDoOBJ의 id를 받아서 오고
span의 innerText는 newToDoOBJ의 text를 받습니다.
submitToDo함수에 createToDo와 localSaveToDos를 넣어줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
function submitToDo(submitEvent) {
submitEvent.preventDefault();
const inputValue = todoInput.value;
todoInput.value = "";
const newToDoOBJ = {
text: inputValue,
id: Date.now(),
};
toDos.push(newToDoOBJ);
createToDo(newToDoOBJ);
localSaveToDos();
}
|
cs |
submit 실행문을 만들고 작동이 되는지 확인을 해봅니다.
1
|
todoForm.addEventListener("submit", submitToDo);
|
cs |
입력한 값이 리스트로 나타나면서 작동되는 것을 확인할 수 있습니다.
하지만 새로고침을 하면 없어져 버리고 새로 입력하면 로컬스토리지에는 이전에 있던 값이 없어지고
그 위에 새로운 값이 덧씌워져 버리는데 이러한 이유는 이전에 있던 값들을 불러오지 못하고
새로운 값들만 다시 배열에 넣고 있기 때문입니다.
이것을 해결하기 위해
로컬스토리지에 있는 키값(TODOS_KEY)을 가져오는 것을 변수로 지정하고
if 조건문을 이용하여 로컬스토리지에 키값이 있다면 그것을 불러와서 화면에 나타내 주는 함수를 만듭니다.
1
2
3
4
5
6
7
8
9
|
const savedToDos = localStorage.getItem(TODOS_KEY);
if (savedToDos !== null) {
const parseToDos = JSON.parse(savedToDos);
toDos = parseToDos;
parseToDos.forEach(createToDo);
//parseToDos를 createToDo의 매개변수로 넣고 처음부터 끝까지 돌려준다
//parseToDos에 들어있는 배열값만큼 createToDo함수가 작동된다.
}
|
cs |
로컬스트리지에 넣을 때 JSON.stringify를 이용해 string값으로 넣었기 때문에
불러올 때는 JSON.parse를 이용해 원래의 값(배열)으로 바꿔서 가져옵니다.
# parseToDos.forEach(createToDo); forEach는 for문과 마찬가지로 반복적인 기능을 수행할 때 사용합니다.
배열에 있는 각각의 아이템 실행 ex)localStorage에 저장된값이 8개면 8번실행
기본적인 사용법
const arr = [0,1,2,3,4,5,6,7,8,9,10];
arr.forEach(function(element){
console.log(element); // 결과값: 0 1 2 3 4 5 6 7 8 9 10
});
// 혹은 arrow 함수 가능
arr.forEach(element => console.log(element));
|
'코딩이야기 > JS공부' 카테고리의 다른 글
[JavaScript] - To Do List 만들기③ (0) | 2022.07.19 |
---|---|
[JavaScript] - To Do List 만들기① (0) | 2022.07.19 |
[JavaScript] - 로그인 폼 만들기 ② (0) | 2022.07.15 |
[JavaScript] - 로그인 폼 만들기 ① (0) | 2022.07.15 |
[JavaScript] - 디데이 타이머 (0) | 2022.07.15 |