-keyup
이벤트를 적용해 username이나 password 둘 중 하나라도 입력값의 길이가 0이 되면 버튼의 활성화를 하는 클래스를 제거한다.
keydown
: 키를 눌렀을때 발생 (한영변환, 한자 등의 특수키를 제외한 키에 동작)
keyup
: 키를 눌렀다가 땠을 때 발생
keypress
: 키를 눌렀을때 발생 (shift, ctrl, tab 등의 특수키를 제외한 키에 동작)
-keydown
, keypress
는 키를 누르자마자 (문자가 입력되기도 전에) 이벤트가 발생하므로 처음 눌렀을 때의 값이 빈 스트링으로 나왔다. 반면에 keyup
은 눌렀다가 땠을 때 (문자가 입력된 후) 이벤트가 발생해 그때의 값이 바로 나왔다. 누른 순간의 값의 길이가 필요했기때문에 keyup
을 사용했다.
-keydown
이벤트를 적용해 이벤트가 발생한 keyCode가 엔터의 keyCode인 13일 때 댓글을 upload하는 함수를 호출한다.
-click
이벤트를 적용해 게시 버튼을 클릭할 때 댓글을 upload하는 함수를 호출한다.
-엔터를 누르거나 클릭 후 댓글창의 value를 빈 값으로 바꾼다.
-댓글을 화면에 표시하기 위해 document.createElement()
를 사용해 댓글을 구성하는 태그 (li
, span
, p
와 댓글의 오른쪽 하트버튼을 위한 img
, 삭제를 위한 button
)를 만든다.
-innerText
를 이용해 span
, p
태그 안쪽 text를 적용한다.
-appendChild
를 이용해 span
, p
, button
, img
를 li
의 자식요소로 적용 후 li
를 ul
의 자식요소로 적용한다.
▼ 댓글추가가 적용된 HTML
-댓글 옆에 만든 button
을 가져와 click
이벤트를 적용했다.
-removeChild
를 이용해 button
의 부모노드인 li
를 제거한다. 이때 li
의 모든 자식요소도 같이 제거된다.
-click
이벤트를 적용해 검색창을 클릭하면 돋보기 아이콘의 left
속성을 변경하고 '검색'단어의 위치를 변경하는 클래스를 추가한다.
-keyup
이벤트를 적용해 검색창에 입력하는 문자(this.value)를 HTML에 작성된 검색리스트의 단어들과 하나씩 비교하는 for문
을 사용했다.
-검색리스트의 태그를 제외한 문자열을 listwords 변수에 저장후, includes
를 사용해 listwords에 this.value
가 포함되어 있는지 판별한다.
-참일 경우 그 listwords를 빈 배열 matchedWords에 추가하고 map
을 이용해 배열 matchedWords의 단어들을 화면에 표시한다.
-거짓일 경우 아무것도 나타나지 않는다.
-검색어가 두글자 이상일 경우, 참이면 그대로 화면에 표시하고 거짓이면 else if
만 적용돼 matchedWords는 빈 배열인 상태로 유지하고 화면에는 아무것도 나타나지 않는다.
-검색어를 다 지웠을경우 matchedWords를 비우고 빈 스트링을 적용해 화면에 나타난 말풍선을 지운다.
처음에는 검색리스트의 단어 하나하나를
display:none
를display:blcok
로 변화시키는 클래스를 추가, 제거 했다. 지금은 임의로 HTML에서 작성한 검색리스트를 가져왔지만 외부에서 검색리스트를 가져왔을 경우에는 적용하기 어려운 문제가 있었고 매치된 검색어들이 나타나는 말풍선의 css를 제어하기 힘들었다. 그래서 매치된 단어들을 배열에 넣고 그 배열을 HTML에 적용했다.
안녕하세요🙌 canon_mj 제 계정인데 구글링하다가 우연히 보게되었어요 ㅎㅎ! 여기서 보니 반갑네요 :)