Java Script (JS) - ToDoList
2020. 5. 10. 09:56ㆍ프론트엔드 Study
이전에 했던 UserName에 이어서 작성했다.
새 js 파일을 만들고 toDos 조건은 아직 놔둔채로 입력했을 때 로그가 찍히는지 먼저 확인
무리없이 작동하지만 내가 원하는 것은 엔터를 입력하면 input 박스 안의 내용이 사라지는 것이다.
그래서 아래와 같이 초기화를 해주도록 하자
이제 JS에서 직접 태그를 생성해보자
우선 html 파일에서 li를 하나 만들어 둔다
그 다음 JS에서 직접 child 태그를 생성하고
html의 Li 태그의 자식으로 묶어주자.
createElement로 li와 버튼, span을 생성하고
버튼과 span을 li의 자식 태그 지정한 후
js의 li를 html의 li의 자식으로 넣는다.
문제점을 발견했는데
난 버튼을 특수문자로 지정해놨는데 보이지 않는 현상이 생겼다.
이럴 때 charset을 해주자.meta charset 잘 나온다.
이제 본격적으로 ToDo 리스트를 만들어보자
비어있는 리스트를 생성한 후
toDoObj라는 오브젝트를 Dict 형태로 생성하고
빈 리스트인 toDos에 넣어준다 (push)
위 그림에서 나와있듯이 아무 것도 입력하지 않을 때는 빈 리스트이다.
그런데 공부를 입력하고 나서 toDos를 보면 만들어둔 Dict형태로 들어가있다.누적되어 쌓인다
이제 li 태그에 id를 부여하자
id를 부여하는 이유는 li를 삭제할 때 어느 li를 지워야하는지 알아야하기 때문
li.id를 통해 id를 부여한다.
이제 local storage에 저장하자
이건 내가 원한 모습이 아니다.
이러한 현상이 나타나는 이유가 있는데.
local storage에는 Java Script의 데이터를 저장할 수 없기 때문이다.
local storage에는 오직 string만 저장할 수 있다.
임의로 hello라는 이름으로 true값을 넣어보았다.
그리고 콘솔에서 local storage의 hello를 쳐보면
true가 ""안에 감싸져서 텍스트 형태로 있는 것을 볼 수 있다.텍스트 형태이다.
JSON.stringify를 사용하면 자바스크립트의 데이터를 string으로 변환시켜준다.잘 들어갔다.
데이터를 불러오자
콘솔에서 확인해보면
로컬 스토리지에 있는 toDos 데이터를 잘 가지고 왔다.
그러나 가져온 데이터가 string이라는 문제가 있기 때문에 JSON을 사용하자.
JSON의 parse를 사용하여 변경하였다.
string을 오브젝트로 변환한 parsedToDos에 forEach를 적용한다.
자 이제 forEach를 이용하여 각각 요소에 paintToDo를 적용시켜보자
자동으로 화면에 뿌려준다.
다음엔 Delete를 진행해보자
'프론트엔드 Study' 카테고리의 다른 글
Java Script(JS) - IMG (0) | 2020.05.10 |
---|---|
Java Script(JS) - ToDoLIst (2) (0) | 2020.05.10 |
Java Script(JS) - Username (0) | 2020.05.09 |
Java Script(JS) - Clock (0) | 2020.05.09 |
Java Script(JS) ClickEvent 시 ClassName 생성 (0) | 2020.05.09 |