- 더미데이터를 화면에 나열한다 (거의 떠먹음)
- 답변완료인것 팡파레 이모지, 초록 박스. 미완료인것 고구마이모지, 오렌지 박스, notice 이모지 없음, salmon색 박스
- submit 클릭했을때 게시판 추가
- 새로고침 했을때 기존에 등록한 질문들 유지하기(수정필요)
ul
요소 선언후 reunder
함수에 전달인자로 준다.render
함수 : 더미데이터 배열의 각각의 요소를 li
에 넣어 리턴하는 convertToDiscussion
함수에 전달인자로 넣어준다. ul
의 자식요소로 리턴된 li
를 반복문을 이용해 화면에 렌더링 해준다.li
안에 들어갈 요소들을 만드는 함수 convertToDiscussion
안만 손보면된다.convertToDiscussion
: li
요소에는 아바타이미지, 질문자이름, 질문제목, 시간 답변유무 아이콘을 생성한다. const discussionAnsweredPtag = document.createElement("p");
const keyValue = obj.title;
if (keyValue.includes("notice")) {
discussionAnsweredPtag.textContent = "";
li.style.background = "#f2958a";
} else if (obj.answer === null) {
discussionAnsweredPtag.textContent = "🍠";
li.style.background = "orange";
} else if (obj.answer !== null) {
discussionAnsweredPtag.textContent = "🎉";
li.style.background = "#2f962f";
}
submit
이벤트는 홈페이지를 새로고침하는 기본기능이 들어있다. 새로고침하면 데이터를 잃게 되므로 이를 막아줘야하는데 event.preventDefault()
메소드를 사용하면된다.input
에 입력한 정보들을 받아와 convertToDiscussion
에 전달인자로 보내준다. 이를 ul
태그에 append
시켜서 화면에 보여준다. localStorage
에 setItem
메소드를 사용하여 저장해야하는데 value값에는 문자열만 들어갈 수 있으므로 객체를 문자열로 변환해주는 메소드인 JSON.stringify
를 사용한다.localStorage.setItem("key", JSON.stringify(obj));
-localStorage
에 저장 되어있는 값들을 화면에 출력해야 하므로 문자열상태인 값을 JSON.parse
를 이용해 객체로 변환해준다. 그리고 변환한 값을 li
를 리턴하는 함수인 convertToDiscussion
에 매개변수로 넘겨주어 ul
에 prepend
한다.
ul.prepend(convertToDiscussion(JSON.parse(localStorage.getItem("key")))
localStorage
에 저장되어있는 값이 비어있지 않다면 저장되어있는 값을 출력하므로 if문을 사용한다.if (localStorage.getItem("key") !== null) {
ul.prepend(convertToDiscussion(JSON.parse(localStorage.getItem("key"))));
}
이렇게 끝낸다면 여러개의 질문이 추가 되었을때, 새로고침을 하면 마지막 질문만 남게된다. 어떤 코드를 변경하여unshift
를 하면 해결되는데 왜 내가 짠 코드는 실행이 안될까? 나중에 도전....