티스토리 뷰

JavaScript

To Do List 만들기

ljy98 2022. 1. 12. 14:14

1. CRUD

2. To Do List 제작

    2.1. 기본 틀

    2.2. List 항목 Create

    2.3. List 항목 Update

    2.4. List 항목 Delete

    2.5. 완성된 JavaScript


1. CRUD

[그림 1] CRUD 개념

대부분의 게시판은 CRUD 속성을 갖는다. CRUD는 4개 단어의 약자를 따서 만들었다. C는 Create, R은 Read, U는 Update, D는 Delete를 의미한다.

 

오늘 제작할 To Do List는 C, U, D 기능을 사용할 수 있도록 하는 것이 목표이다.

 

 

2. To Do List

2.1. 기본 틀

[그림 2] To Do List의 HTML 파일 

form 태그 안에 input 태그 2개를 넣어서 각각 해야 할 일을 작성할 수 있는 text 박스와 작성한 내용을 등록할 수 있는 submit 박스로 나타냈다.

 

ul 태그 안에는 submit한 List 항목이 담기도록 JavaScript로 구현할 것이다.

 

[그림 3] To Do List의 CSS 파일

CSS 파일은 기본적인 내용을 삽입해주었다. 

 

이 게시물을 순서대로 보는 당신은 .span2Element와 .inputElement는 HTML 파일에 존재하지 않는 class 명인데 왜 적혀 있는가 의문이 들 것이다. 이는 script에서 새로운 Element를 생성해주고 그 Element에 class명을 붙일 수 있기 때문이다.

 

2.2. List 항목 Create

[그림 4] List 항목 Create 기능을 넣은 script

[그림 2]의 HTML을 보면 head에 script를 넣은 것을 볼 수 있다. 따라서 body에 있는 내용에 대해 script를 작성하면 실행 순서가 head -> body이기 때문에 body가 랜더링되기 전에 head의 script가 동작하려고 하다가 에러가 발생한다.

 

이를 해결해주기 위해 [그림 4]의 첫 문장에 addEventListener를 이용해서 DOM Content가 모두 로드된 후에 init이라는 function이 실행되도록 해주었다.

 

submitHandler 함수는 작성한 List 항목 등록에 관여한다. input 태그의 submit 타입은 submit이 되었을 때 action=""의 ""안에 포함된 주소로 이동하는 특징이 있다. 이를 제거해주기 위해 preventDefault()를 적어주었다.

 

addCard는 List에 항목을 새로 추가하는 함수이다. 원래 HTML 파일에는 ul 태그가 있고 그 안에 아무것도 없었는데, 그 안에 li를 만들고 li 안에 spanElement와 span2Element로 span 태그 2개를 생성해준다. spanElement를 클릭하면 Update가 되도록 하고, span2Element를 클릭하면 Delete가 되도록 해 줄 것이다.

 

2.3. List 항목 Update

[그림 5] List 항목 클릭 시 input 태그가 나타나는 script

updateFlag는 [그림 4]에서 선언되어 true라는 값이 할당되었다. if 문이 의미하는 것은 하나의 항목 수정이 완료되기 전에 다른 항목을 수정할 수 없도록 하기 위함이다. 

 

[그림 6] List 항목 수정 후 Enter를 눌렀을 때 실행되는 script 구문

수정 후 다시 input 태그에서 span 태그로 돌아가기 위해 keypressHandler 함수를 만들었다. keyCode가 13인 것은 Enter 키이다.

 

함수의 마지막 부분에 updateFlag 값을 true로 바꿔주는 이유는 첫 번째 수정 시에만 함수가 작동하는 것이 아니라, 몇 번을 수정하더라도 수정 후 Enter 키를 누르면 input 태그가 없어지고 span 태그로 수정된 문구가 나타나도록 해주기 위함이다.

 

2.4. List 항목 Delete

[그림 7] List 항목 Delete 기능 script

Delete 기능은 다른 기능에 비해 간단하다. span2Element의 parentNode인 li 태그를 remove()로 삭제해주면 된다.

 

2.5. 완성된 JavaScript

[그림 8] 완성된 JavaScript

위에 언급한 기능들이 모두 포함되어 있는 완성된 JavaScript이다.

 

[그림 9] 완성된 To Do List 웹페이지

웹 페이지에서 잘 작동하는 것을 확인하였다.

'JavaScript' 카테고리의 다른 글

mouseover 기능을 이용한 메뉴 슬라이더 구현  (0) 2022.01.13
시간과 관련된 Web APIs  (0) 2022.01.12
DOMContentLoaded, Load, Unload (작성 중)  (0) 2022.01.11
동기식 vs. 비동기식 (작성 중)  (0) 2022.01.10
this  (0) 2022.01.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함