팀 사정상 댓글기능 구현 또한 내가 맡게 되었다.
댓글 저장 기능
<div id="review">
<div class="login">
<input type="text" id="comment" placeholder="comment" maxlength='144'>
<input type="text" id="nickName" placeholder="name" maxlength='8'>
<input type="password" id="password" placeholder="password" oninput='handleOnInput(this, 8)'>
</div>
<div class="buttons">
<div class="button">
<button class="save" type="button" onclick="save()">작성</button>
</div>
</div>
<div id="visitBook">
</div>
먼저 댓글을 작성하기 위한 댓글 닉네임과 비밀번호, 그리고 코멘트 부분의 뼈대를 만들었다.
그리고 아이디, 비밀번호, 코멘트의 글자수를 maxlength / oninput='handleOnInput(this, 8)로 제한했다.
const nickName = document.getElementById('nickName');
const password = document.getElementById('password');
const comment = document.getElementById('comment');
닉네임과 비밀번호, 코멘트를 getElementById 로 받아온다.
function save() {
if (!nickName.value && !password.value) {
alert("아이디 또는 비밀번호를 확인해주세요")
return false
} else if (!nickName.value) {
alert("아이디를 확인해주세요")
return false
} else if (!password.value) {
alert("비밀번호를 확인해주세요")
return false
} else {
//로컬스토리지에 저장될 고유한 값을 index로 만듬//
let index = localStorage.length
//로컬스토리지의 값이 될 부분을 객체화함//
let saveObj = { 'userid': nickName.value, 'userpw': password.value, 'comment': comment.value, 'index': index }
//로컬스토리지의 키와 값을 지정, JSON.stringify로 문자열화//
window.localStorage.setItem(arr + nickName.value + password.value + index, JSON.stringify(saveObj))
location.reload()
}
}
먼저 닉네임과 비밀번호, 코멘트를 기입함에 있어서 조건을 달아준다.
조건을 만족하면 로컬스토리지에 저장한다.
let index = localStorage.length는 댓글이 추가될 때 마다 고유한 index값이 할당된다.
let saveObj는 나중에 댓글 수정, 삭제할 때 필요한 정보를 객체의 형식으로 할당했다.
window.localStorage.setItem으로 로컬스토리지에 저장했다.
(arr + nickName.value + password.value + index) 이 부분은 로컬스토리지에 저장된 댓글의 고유한 키다.
값 부분은 JSON.stringify로 문자열화 한 saveObj다. 로컬스토리지는 문자열 밖에 저장이 안 되기 때문이다.
}
//작성버튼을 누르면 방명록이 자동으로 보이게, 이 함수로 인해서 작성 버튼에 onclick 속성을 두개 부여함//
window.onload = function () {
let a = document.getElementsByClassName("save");
a.onclick = load();
}
작성버튼을 누르면 save() 함수 뿐만이 아니라 새로고침이 되면서 load()함수도 같이 실행된다.
'팀 과제(영화 사이트)' 카테고리의 다른 글
[내일배움캠프] 노드몬 팀 과제 영화사이트 제작 결과물 (0) | 2023.06.16 |
---|---|
[내일배움캠프] 노드몬 팀 과제 영화사이트 제작-4- (0) | 2023.06.12 |
[내일배움캠프] 노드몬 팀 과제 영화사이트 제작-3- (0) | 2023.06.12 |
[내일배움캠프] 노드몬 팀 과제 영화사이트 제작-1- (0) | 2023.06.12 |
[내일배움캠프] 노드몬 팀 과제 영화사이트 제작 (0) | 2023.06.11 |