
웹 스토리지
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>로컬 스토리지에 데이터 저장 및 출력하기</h1>
<script>
// 로컬스토리지에 값 저장하는 부분은 JS Script로 처리 함.
localStorage.setItem("weekDay1", "월요일");
localStorage.setItem("weekDay2", "화요일");
localStorage.setItem("weekDay3", "수요일");
localStorage.setItem("lunch1", "샌드위치");
console.log("로컬스토리지에 있는 weekDay1 값 : " + localStorage.getItem("weekDay"));
console.log("로컬스토리지에 있는 Key의 개수 : " + localStorage.length);
localStorage.removeItem("weekDay1");
console.log("로컬스토리지에 있는 Key의 개수 : " + localStorage.length);
let key, value;
for(let i=0; i < localStorage.length; i++) {
key = localStorage.key(i);
value = localStorage.getItem(key);
console.log("key : " + key + ", value : " + value);
}
// 실제 사용 시는 주로 일회성 데이터를 저장할 때 사용 함
// 개발자도구(F12) > Application > Stroage > LocalStorage > 해당 도메인 별로 저장되어있는걸 확인할 수 있음.
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>실습 2</title>
</head>
<body>
<script>
let key = prompt("학년을 입력하세요.");
let value = prompt("이름을 입력하세요.");
localStorage.setItem(key, value);
if (key != null && value != null) {
let element = document.createElement('p');
element.innerText = key + " : " + localStorage[key];
document.body.append(element);
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>세션 스토리지</title>
</head>
<body>
<h1>세션스토리지에서 데이터 저장하고 읽기</h1>
<h2>콘솔에서 확인하세요~~</h2>
<script>
sessionStorage.setItem("food1", "치킨");
sessionStorage.setItem("food2", "피자");
sessionStorage.setItem("food3", "파닭");
console.log("세션스토리지에 저장된 키의 개수 : " + sessionStorage.length);
let key, value;
for(let i=0; i < sessionStorage.length; i++) {
key = sessionStorage.key[i];
value = sessionStorage.getItem(key);
console.log("key :" + key + ", value : " + value);
}
// 세션스토리지 : 사용법은 로컬 스토리지와 동일하나, 브라우저가 닫히면 전부 삭제된다는 점이 다름.
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>메모장</title>
<script>
let msg, info;
function pageLoad() {
msg = document.querySelector("#txtBox");
msg.value = window.localStorage.getItem("memo");
info = document.querySelector("#info");
forEachKey(getKeyInfo);
displayItemsInfo();
}
function saveText() {
info.style.display = "block";
window.localStorage.setItem("memo", msg.value);
forEachKey(getKeyInfo);
displayItemsInfo();
console.log("memo : " + localStorage.getItem("memo"));
}
function clearText() {
msg.value = "";
localStorage.clear();
info.style.display = "none";
}
function getKeyInfo(param) {
console.log("param : " + param);
}
function displayItemsInfo() {
for(let i = 0 ; i < localStorage.length; i++) {
console.log("displayItemsInfo : " + localStorage.getItem(localStorage.key(i)));
}
}
function forEachKey(callback) {
for(let i = 0; i < localStorage.length; i++)
callback(localStorage.key(i));
}
</script>
</head>
<body onload="pageLoad()">
<h1>스토리지를 이용한 메모장</h1>
<h2>메시지</h2>
<textarea id="txtBox" cols="50" rows="5" onkeyup="saveText()"></textarea>
<br>
<input id="clear" type="button" value="메시지 비우기" onclick="clearText()">
<p id="info" style="display: none;">메모 내용이 저장되었습니다.</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>실습</title>
</head>
<body onload="showList()">
<table>
<tr>
<td>
<label for="color">색상 선택</label>
<select name="color" id="color">
<option value="">색상선택</option>
<option value="red">red</option>
<option value="orange">orange</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
<option value="blue">blue</option>
<option value="navy">navy</option>
<option value="purple">purple</option>
</select>
</td>
<td>
<label for="nm">고객성명</label>
<input id="nm" name="nm" type="text" value="" maxlength="30" placeholder="고객성명">
</td>
<td>
<label for="phone">전화번호</label>
<input id="phone" name="phone" type="text" value="" maxlength="30" placeholder="전화번호">
</td>
<td>
<input type="button" id="add" value="추가" onclick="addStorage()">
<input type="button" id="del" value="전부 초기화" onclick="deleteAll()">
</td>
</tr>
</table>
<ul id="list">
</ul>
<script>
function addStorage() {
let color = document.querySelector("#color");
let nm = document.querySelector("#nm");
let phone = document.querySelector("#phone");
let key = nm.value + "\\" + new Date().getTime();
let value = phone.value + "\\" + color.value;
if (!color.value) {
alert("색상을 선택해주세요");
return false;
}
if (!nm.value) {
alert("이름을 입력해주세요");
return false;
}
if (!phone.value) {
alert("전화번호를 입력해주세요");
return false;
}
localStorage.setItem(key, value);
addList(key);
resetVal();
}
function resetVal() {
color.value = "";
nm.value = "";
phone.value = "";
}
function addList(key) {
let list = document.querySelector("#list");
let element = document.createElement('li');
let name = key.split("\\")[0];
let phone = localStorage.getItem(key).split("\\")[0];
let color = localStorage.getItem(key).split("\\")[1];
element.innerText = name + " / " + phone;
element.style.backgroundColor = color;
element.setAttribute("data-key", key);
element.setAttribute("onclick", "deleteThis(this)");
list.append(element);
}
function deleteAll() {
let list = document.querySelector("#list");
list.innerHTML = "";
localStorage.clear();
}
function deleteThis(element) {
let list = document.querySelector("#list");
let key = element.dataset.key;
list.removeChild(element);
localStorage.removeItem(key);
}
function showList() {
for(let i = 0; i < localStorage.length; i++) {
addList(localStorage.key(i));
}
}
</script>
</body>
</html>
xml / JSON


xml 문서
JSON
JSON에 포함될 수 있는 데이터 타입
* blob은 객체로 포함 됨.

실습 1 : 위 Storage 실습 4번을 JSON 객체/배열로 Storage에 저장시키기
JSON.stringfy(Array 또는 Object) => Array 또는 Object를 String 으로 전환JSON.parse(Stirng) => String을 Array 또는 Object로 전환<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>실습</title>
</head>
<body onload="showList()">
<table>
<tr>
<td>
<label for="color">색상 선택</label>
<select name="color" id="color">
<option value="">색상선택</option>
<option value="red">red</option>
<option value="orange">orange</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
<option value="blue">blue</option>
<option value="navy">navy</option>
<option value="purple">purple</option>
</select>
</td>
<td>
<label for="nm">고객성명</label>
<input id="nm" name="nm" type="text" value="" maxlength="30" placeholder="고객성명">
</td>
<td>
<label for="phone">전화번호</label>
<input id="phone" name="phone" type="text" value="" maxlength="30" placeholder="전화번호">
</td>
<td>
<input type="button" id="add" value="추가" onclick="addStorage()">
<input type="button" id="del" value="전부 초기화" onclick="deleteAll()">
</td>
</tr>
</table>
<ul id="list">
</ul>
<script>
function addStorage() {
let color = document.querySelector("#color");
let nm = document.querySelector("#nm");
let phone = document.querySelector("#phone");
if (!color.value) {
alert("색상을 선택해주세요");
return false;
}
if (!nm.value) {
alert("이름을 입력해주세요");
return false;
}
if (!phone.value) {
alert("전화번호를 입력해주세요");
return false;
}
let key = nm.value + "\\" + new Date().getTime();
// String 으로 저장하기 (방법 1)
// let value = phone.value + "\\" + color.value;
// localStorage.setItem(key, value);
// 배열로 저장하기 (방법 2)
let arr = [];
arr.push(nm.value);
arr.push(phone.value);
arr.push(color.value);
localStorage.setItem(key,JSON.stringify(arr));
// JSON.stringify(Array 또는 Object) => array를 string 으로 / JSON.parse(String) => String을 다시 Array 또는 Object로
addList(key);
resetVal();
}
function resetVal() {
color.value = "";
nm.value = "";
phone.value = "";
}
function addList(key) {
let list = document.querySelector("#list");
let element = document.createElement('li');
// String 으로 저장하기 (방법 1)
// let name = key.split("\\")[0];
// let phone = localStorage.getItem(key).split("\\")[0];
// let color = localStorage.getItem(key).split("\\")[1];
// element.innerText = name + " / " + phone;
// element.style.backgroundColor = color;
// 배열로 저장하기 (방법 2)
let values = JSON.parse(localStorage.getItem(key));
let objArr = {
"name" : values[0],
"phone" : values[1],
"color" : values[2]
};
element.innerText = objArr.name + " / " + objArr.phone;
element.style.backgroundColor = objArr.color;
element.setAttribute("data-key", key);
element.setAttribute("onclick", "deleteThis(this)");
list.append(element);
}
function deleteAll() {
let list = document.querySelector("#list");
list.innerHTML = "";
localStorage.clear();
}
function deleteThis(element) {
let list = document.querySelector("#list");
let key = element.dataset.key;
list.removeChild(element);
localStorage.removeItem(key);
}
function showList() {
if (localStorage.length > 0) {
for(let i = 0; i < localStorage.length; i++) {
addList(localStorage.key(i));
}
}
}
</script>
</body>
</html>