끄적끄적 코딩
article thumbnail
Published 2020. 12. 22. 23:16
[JavaScript] localStorage 사용 JavaScript
728x90

웹 스토리지
- 로컬 스토리지 => 웹페이지의 세션이 끝나더라도 데이터가 지워지지 않음
- 세션 스토리지 => 웹페이지의 세션이 끝날 때 저장된 데이터가 지워짐

input태그에 입력한 이름을 localStorage에 저장해보려 합니다

<!-- index.html -->

<!DOCTYPE html>
<html>
  <head>
    <title>localStorage</title>
    <link rel="stylesheet" href="index.css" />
  </head>
  <body>
    <form class="js-form from">
      <input type="text" placeholder="What is your name?" />
    </form>
    <h4 class ="js-greetings greetings"></h4>
    </script>
    <script src="greeting.js"></script>
  </body>
</html>

greeting.js에서 작업을 하려고 합니다. 호출해줍니다.

 

// greeting.js

const form = document.querySelector(".js-form");
const input = form.querySelector("input");
const greeting = document.querySelector(".js-greetings");

const USER_LS = "currentUser";
const SHOWING_CN = "showing";

function saveName(text) {
  localStorage.setItem(USER_LS, text);
}

function handleSubmit(event) {
  event.preventDefault();
  const currentValue = input.value;
  paintGreeting(currentValue);
  saveName(currentValue);
}

function askForName() {
  form.classList.add(SHOWING_CN);
  form.addEventListener("submit", handleSubmit);
}

function paintGreeting(text) {
  form.classList.remove(SHOWING_CN);
  greeting.classList.add(SHOWING_CN);
  greeting.innerText = `Hello ${text}`;
}

function loadName() {
  const currentUser = localStorage.getItem(USER_LS);
  if (currentUser === null) {
    askForName();
  } else {
    paintGreeting(currentUser);
  }
}

function init() {
  loadName();
}

init();

form에 js-form태그를 넣습니다.
input에 js-form태그 안의 input태그를 넣습니다.
greeting에 js-greeting태그를 넣습니다.

USER_LS는 사용자가 입력한 이름을 저장하는 변수명을 상수로 가지고 있습니다.
SHOWING_CN는 클래스 이름 showing을 상수로 가지고 있습니다.

-- 함수 --
loadName
  localStorage에 이름이 있는지 확인
    없을 경우 askForName 함수 호출
    있을 경우 paintGreeting 함수 호출

askForName
  form의 클래스에 SHOWING_CN을 추가하여서 해당 form을 보이게 함
  form의 submit에 handleSubmit 함수를 연결

handleSubmit
  submit 이벤트를 제거
  currentValue에 입력한 값을 대입
  paintGreeting함수 호출
  saveName함수 호출

paintGreeting
  form을 숨김
  greeting을 보이게 함
  greeting에 "Hello " + {입력한 값}을 text로 넣음

saveName
  localStorage에 USER_LS에 입력값을 저장

/* index.css */

body {
  background-color: peru;
}

.form greetings {
  display: none;
}

.form {
  text-align: center;
}

input {
  font-size: 30px;
}

h4 {
  text-align: center;
  color: white;
  font-size: 40px;
}
.showing {
  display: block;
}

 

localStorage는 f12(개발자 도구) - Application - Storage - Local Storage에서 확인이 가능합니다.
 

J3SUNG입력 - localStorage에 저장 된것을 확인 가능

 

새로고침(세션 만료) - localStorage가 여전히 저장되어 있음.

'JavaScript' 카테고리의 다른 글

[JavaScript] 배경이미지 설정  (0) 2020.12.23
[JavaScript] to do list 만들기 (localStorage)  (2) 2020.12.23
[JavaScript] 실시간 시간 표시  (0) 2020.12.22
[JavaScript] 이벤트  (0) 2020.12.18
[JavaScript] document 객체  (0) 2020.12.18

검색 태그