WEB/JavaScript
[WEB] 자바스크립트 게시판 CRUD
다콩잉
2022. 9. 11. 23:15
자바스크립트로 게시판 CRUD를 구현해보았다.
DB를 사용하지 않고 어떤 방식으로 글을 등록하고 수정하고 삭제할지 고민하던 중
localstorage 를 사용하여 브라우저에 저장할 수 있다는 것을 알게 되었다.
아직은 코드가 조금 난잡하여 수정 예정이다.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>연습</title>
</head>
<body>
<table id="table" class="table table-hover">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<button style=" float: right;" onclick="location.href='register.html'">글 등록</button>
<script src = "index.js"></script>
<script src = "check.js"></script>
</body>
</html>
index.js
function getForm(){
var title = document.querySelector("#title").value;
var content = document.querySelector("#content").value;
window.localStorage.setItem(title, content);
}
const length = window.localStorage.length;
console.log(length);
for(var i = 0; i < length; i++){
var key = window.localStorage.key(i); // localStorage key 이름 -> 제목
var value = window.localStorage.getItem(key); // 내용
var tbody = document.querySelector("tbody");
var tr = document.createElement("tr");
tbody.appendChild(tr);
for(var j = 0; j < 2; j++){
var td = document.createElement("td");
if(j == 0){
td.innerHTML = i;
}else if(j == 1){
var form = document.createElement("form");
form.method = "get";
form.action = "check.html"
var input = document.createElement("input");
input.style.display = "none";
input.name = "num";
input.value = i;
var btn = document.createElement("input");
btn.type = "submit";
btn.value = key;
btn.style.border = 0;
btn.className = i;
btn.style.backgroundColor = "white";
btn.setAttribute("onClick", "show(this)");
td.appendChild(form);
form.appendChild(input);
form.appendChild(btn);
}
tr.appendChild(td);
}
}
register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src = "index.js"></script>
</head>
<body>
<form method="post" action="index.html">
<div>
<label for="exampleFormControlInput1" class="form-label">제목</label>
<input type="text" id="title" class="form-control form-control-lg" id="exampleFormControlInput1" placeholder="">
</div>
<div>
<label for="exampleFormControlTextarea1" class="form-label">내용</label>
<textarea id="content" class="form-control form-control-lg" id="exampleFormControlTextarea1" rows="6"></textarea>
</div>
<button type="submit" onclick="getForm()">등록</button>
<button onclick="location.href='index.html'">목록</button>
</form>
</body>
</html>
check.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div style="margin-bottom: 30px;">
<label for="exampleFormControlInput1" class="form-label">제목</label>
<div class="title"></div>
</div>
<div>
<label for="exampleFormControlInput1" class="form-label">내용</label>
<div class="content"></div>
</div>
<div style="display: flex; justify-content: flex-start;">
<form method="get" action="update.html">
<input name="num" class="num" type="text" style="display: none;">
<button type="submit">수정</button>
</form>
<button type="button" onclick="del()">삭제</button>
<button onclick="location.href='index.html'">목록</button>
</div>
<script src = "check.js"></script>
</body>
</html>
check.js
var title;
var content;
function show(self){
title = window.localStorage.key(self.className);
content = window.localStorage.getItem(title);
console.log("t: ", title);
console.log("c", content);
location.href = "check.html"
}
var num = window.location.search; // url parameter값 가져오기
console.log(num);
num.split["="];
num = num[num.length-1];
var title = window.localStorage.key(num);
var content = window.localStorage.getItem(title);
document.querySelector(".title").innerHTML = title;
document.querySelector(".content").innerHTML = content;
var hiddenP = document.querySelector(".num");
hiddenP.value = num;
console.log("dd",hiddenP.value)
function del(){
window.localStorage.removeItem(title);
location.href = "index.html"
}
update.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div style="margin-bottom: 30px;">
<label for="exampleFormControlInput1" class="form-label">제목</label>
<label id="title"></label>
</div>
<div>
<label for="exampleFormControlTextarea1" class="form-label">내용</label>
<textarea id="content" class="form-control form-control-lg" id="exampleFormControlTextarea1" rows="6"></textarea>
</div>
<button onclick="update()">수정</button>
<button onclick="location.href='index.html'">목록</button>
<script src = "update.js"></script>
</body>
</html>
update.js
var num = window.location.search; // url parameter값 가져오기
console.log(num);
num.split["="];
num = num[num.length-1];
var title = window.localStorage.key(num);
document.querySelector("#title").innerHTML = title;
var content = window.localStorage.getItem(title);
document.querySelector("#content").value = content;
function update(){
var cnt = document.querySelector("#content").value;
window.localStorage.setItem(title, cnt);
location.href = "index.html"
}
728x90