만들고 싶은 폼
조건:
로그인 input에 이름을 입력하고 enter나 로그인 버튼을 눌렸을 때
로그인 폼은 사라지고 인사말이 나오며 인사말은 새로고침 해도 초기화되지 않는다.
시작!
How?
1. 로그인 폼에서 submit 이벤트가 일어나면 로그인폼은 사라지고 사용자가 입력한 value는 로컬 스토리지에 저장하는 함수를 만들어줍니다. 2. 사라져있던 인사말이 나오면서 로컬스토리지에 있는 value값을 이용해 인사말을 span에 넣어줍니다. 3. if문을 이용하여 로컬스토리지에 값이 없으면 로그인폼이 나타나고 값이 있으면 인사말이 나오게 합니다. (로컬스토리지에 있는 값을 불러오기 때문에 새로고침해도 인사말을 초기화 되지 않습니다.) 4. 로그아웃 버튼을 이용해 로컬스토리지에 있는 값을 삭제할 수 있게 합니다. |
Html에 div를 2개 만들어 공간을 확보해준 후 로그인 폼과 인사말을 만들어줍니다.
.hidden {
display: none; css에 hidden 클래스를 만들어 인사말을 숨겨줍니다.
} (login폼은 작동확인을 위해 나중에 숨겨줄예정)
1
2
3
4
5
6
7
8
9
10
11
12
|
<div class="login">
<form class="login-form">
<input type="text" required placeholder="이름을 입력하세요.">
<button>로그인</button>
</form>
</div>
<div class="greeting hidden">
<span></span>
<button>로그아웃</button>
</div>
|
cs |
JS에서 Html요소에 접근할 수 있게 변수를 만들어 줍니다.
1
2
3
4
5
6
|
const login = document.querySelector(".login");
const loginInput = document.querySelector(".login-form input");
const greeting = document.querySelector(".greeting");
const greetingSpan = document.querySelector(".greeting span");
const logoutBtn = document.querySelector(".greeting button"); const HIDDEN_CLASS_NAME = "hidden";
|
cs |
우선 로그인 폼에서 submit 이벤트가 일어나면 로그인폼은 사라지고
사용자가 입력한 value는 로컬 스토리지에 저장하는 함수를 만들어줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function loginSubmit(event) {
event.preventDefault();
//form은 submit하면 자동으로 새로고침 되기 때문에 새로고침을 방지해준다.
login.classList.add(HIDDEN_CLASS_NAME);
//로그인 class에 hidden을 더해서 사라지게한다
const loginInputValue = loginInput.value;
//loginInput의 값을 변수에 저장한다
localStorage.setItem("username", loginInputValue);
//로컬스토리지에 key값으로 username value값으로 loginInputValue를 저장한다.
}
login.addEventListener("submit", loginSubmit);
//login클래스에 submit이벤트가 일어나면 loginSubmit함수를 실행한다.
실행되는지 확인하고 if문으로 넣을예정. |
cs |


로그인폼이 없어지며 로컬스토리지에 저장된 것을 확인할 수 있다.
다음은 사라져있던 인사말이 나오면서 로컬스토리지에 있는 value값을 이용해
인사말을 span에 넣어줍니다.
1
2
3
4
5
|
function showGreeting(username) {
greeting.classList.remove(HIDDEN_CLASS_NAME);
//인사말 class에 hidden을 제거해서 나오게 한다.
greetingSpan.innerText = `어서오세요! ${username}님`;
}
|
cs |
만들어진 함수를 loginSubmit함수 마지막 부분에 넣어주고
로컬스토리지에 있는 value값을 이용해서 인사말을 만들어야 되니
loginInputValue값을 매개변수로 받습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function loginSubmit(event) {
event.preventDefault();
login.classList.add(HIDDEN_CLASS_NAME);
const loginInputValue = loginInput.value;
localStorage.setItem("username", loginInputValue);
showGreeting(loginInputValue);
}
function showGreeting(username) {
greeting.classList.remove(HIDDEN_CLASS_NAME);
greetingSpan.innerText = `어서오세요! ${username}님`;
}
login.addEventListener("submit", loginSubmit);
|
cs |

'코딩이야기 > JS공부' 카테고리의 다른 글
[JavaScript] - To Do List 만들기② (0) | 2022.07.19 |
---|---|
[JavaScript] - To Do List 만들기① (0) | 2022.07.19 |
[JavaScript] - 로그인 폼 만들기 ② (0) | 2022.07.15 |
[JavaScript] - 디데이 타이머 (0) | 2022.07.15 |
[JavaScript] 랜덤숫자게임 (0) | 2022.07.11 |