웹 프론트엔드/바닐라 JavaSctipt
바닐라 JS로 크롬 앱 만들기 #4 LOGIN
JYUN(sia)
2024. 1. 13. 04:58
메모장 정리
<form id = "login-form">
<input
required
maxlength="15"
type="text" placeholder="What is your name?"
/> //HTML의 도움을 활용하려면 이 input을 form 안에 위치시켜야 함.
<button>Log In</button>
</form>
input을 form 안에 넣었을 경우 우리가 엔터를 누를 때마다 form은 자동적으로 submit됨.
▷submit의 기본 동작으로서 새로고침 됨
▷event.preventDefault() 사용해서 막아주기
#
const loginInput = document.querySelector("#login-form input");
//login-form은 id
코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Mumentum App</title>
</head>
<body>
<form class = "hidden" id = "login-form">
<input
required
maxlength="15"
type="text"
placeholder="What is your name?"
/>
<button>Log In</button>
</form>
<h1 id = "greeting" class = "hidden"></h1>
<script src="app.js" ></script>
</body>
</html>
.hidden{
display: none;
}
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input"); //login-form은 id
const greeting = document.querySelector("#greeting");
const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KEY = "username";
function onLoginSubmit(event) {
event.preventDefault();
loginForm.classList.add(HIDDEN_CLASSNAME);
const username = loginInput.value;
localStorage.setItem("USERNAME_KEY", username);
paintGreetings(username);
}
function paintGreetings(username){
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
const savedUsername = localStorage.getItem("USERNAME_KEY");
if (savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit", onLoginSubmit);
}
else{
paintGreetings(savedUsername);
}