본문 바로가기
JS

[JS] localStorage 이용하기

by 사과넹 2020. 10. 22.
반응형

with Nicolas.

 

input 창에 이름을 입력하고 localStorage에 저장해서 새로고침해도 입력한 이름을 기억하게 해보자.


코딩순서

1. 구조짜기 - form 과 자식요소로 input 생성

                 이름 입력 후 뜨는 text를 띄우기 위한 글자태그 생성(h, p 등)

2. 변수선언 - 구조로 만든 것들 모두 변수 선언하기

3. 함수선언

  1) 이름 입력시 띄우는 메시지 함수

  2) 엔터시 새로고침되는 이벤트를 중지하는 함수

  3) 이름이 입력되지 않았을 때 계속 form창을 유지하게 하는 함수

  4) if구문을 넣은 함수(저장된 이름이 없을시 3번함수, 있을시 1번함수)

  5) localStorage에 이름을 저장하는 함수(setItem메소드 이용)


HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Something</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <form class="js-form form">
      <input type="text" placeholder="What's your name?" />
    </form>
    <h4 class="js-greeting greeting"></h4>
  </body>
  <script src="greeting.js"></script>
</html>

 

Javascript

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

const USER_LS = 'currentUser',
  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();

 

영상을 한번보고, 두번째로보며 코드를 작성하면서 했는데도 오류가 나서 너무 당황했다.

하지만 역시 내 잘못이였지. 

 

순서대로 이해하면서 코드리딩을하니 어느부분이 잘못되었는지 찾을 수 있었다.

개발자의 길은 멀다 .. 

728x90
반응형

'JS' 카테고리의 다른 글

[JS] To do list 제작  (0) 2020.11.12
[JS] var, let, const 차이점  (0) 2020.10.27
[JS] 새로운 객체 만들기 (new)  (0) 2020.10.22
[JS]전자시계 만들기  (0) 2020.10.21
[JS] 간단한 수학연산 코드 만들기  (0) 2020.10.20