const link = document.querySelector("a");
function linkEvent(event){
event.preventDefault();
console.log(event);
}
link.addEventListener("click", linkEvent);
preventDefault๋ ๋ธ๋ผ์ฐ์ ์์ฒด์์์ ๊ธฐ๋ฅ์ ์์ ์ฃผ๋ ์ญํ ์ ํ๋ค
์๋ฅผ ๋ค์ด a์์๋ฅผ ์์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ฒด์์ ์ค์ ๋ ๋งํฌ๋ก ์ฐ๊ฒฐ๋๋ ํ๊ทธ์ด๋ค
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด ๋งํฌ๊ฐ ์ฐ๊ฒฐ์ด ์๋๋๋ก ๋ง์ ์ ์๋๋ฐ ๊ทธ ๊ธฐ๋ฅ์ด ๋ฐ๋ก preventDefault์ด๋ค.
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
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);
//greeting.innerText = "Hello " + username; ๊ฐ์ ์ฝ๋
//greeting.innerText = `Hello ${username}`; ๋ฐ๋ณต๋๋ ์ฝ๋ ๊ฐ์ ์ฝ๋
//greeting.classList.remove(HIDDEN_CLASSNAME); ๋ฐ๋ณต๋๋ ์ฝ๋
paintGreeting(username);
}
์์ ๋ innerText ์ฝ๋๋ ๊ฐ์ ์ญํ . `Hello ${username}` ;์์ ๋๋ฌ์ผ ๊ธฐํธ ` ` ์ฃผ์
submit์ด ์คํ๋์ ๋ ์๋์ผ๋ก ์๋ก๊ณ ์นจ๋๋ ๋ธ๋ผ์ฐ์ ์์ฒด์ ๊ธฐ๋ฅ์ ๋ง๊ธฐ ์ํด preventDefault๋ฅผ ์ฌ์ฉ
loginForm์ .hidden์ ์ถ๊ฐํ์ฌ submitํ์
์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด loginForm์ด ์ฌ๋ผ์ง๊ฒ ํจ
loginInput์ value๋ฅผ ์ ์ฅํ๊ธฐ ์ํด username์ ๋ณ์๋ฅผ ๋ง๋ฆ
localStorage์ "username"(ํค ๊ฐ์ ์ด๋ฆ์ผ ๋ฟ์ด๋ฏ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ)์ด๋ผ๋ USERNAME_KEY ๋ณ์๊ฐ ์ ์ฅ๋๋๋ก ํจ
์ดํ์ innerText ` Hello ${username] `; ์ผ๋ก ์ด๋ํ
์คํธ๋ฅผ ๋ณ๊ฒฝ.
์ฌ๊ธฐ์ username์ ์์์ ์ง์ ํ const username = loginInput.value;๊ฐ์ด ์ ์ฅ๋ ํ์ greeting์ .hidden์ ์ ๊ฑฐํ์ฌ ํ๋ฉด์ ๋ํ๋๋๋ก ํจ
function paintGreeting(username){
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
์์ ์๋์ '๋ฐ๋ณต๋๋ ์ฝ๋'๋ค์ function paintGreeting()์ผ๋ก ๋ฌถ์ด์ฃผ์ด ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ๋ ๊ฒ๋ค์ ๋จ์ํ๊ฒ ํํํ ์ ์๋ค
const savedUsername = localStorage.getItem(USERNAME_KEY);
if(savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit", onLoginSubmit);
} else {
//greeting.innerText = `Hello ${savedUsername}`; ๋ฐ๋ณต๋๋ ์ฝ๋
//greeting.classList.remove(HIDDEN_CLASSNAME); ๋ฐ๋ณต๋๋ ์ฝ๋
paintGreeting(savedUsername);
}
์ฌ์ดํธ์์ ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ๊ฒ์ localStorage์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ์ด ๋์ด์๋์ง ํ์ธ
์ด๋ฅผ if๋ฌธ์ผ๋ก ๋ํ๋ด๊ณ ๋ง์ฝ savedUsername === null ์ด๋ผ๋ฉด loginForn์ .hidden์ ์ง์์ฃผ๊ธฐ
loginForm์์ submit ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด onLoginSubmit ํจ์๊ฐ ์คํ๋๋๋ก ํจ
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style/style.css">
<title>Momentum App</title>
</head>
<body>
<div id="wrap">
<div id="formTag">
<form id="login-form" class="hidden">
<input required maxlength="15" type="text" placeholder="What is your name?">
<button type="submit">Log In</button>
</form>
</div>
<h1 id="greeting" class="hidden"></h1>
</div>
<script src="script/greeting.js"></script>
</body>
</html>
@charset "UTF-8";
*{
box-sizing: border-box;
}
.hidden{
display: none;
}
div#wrap{
width: 800px;
height: 400px;
border: 1px solid #f00;
background-color: #000;
margin: 0 auto;
position: relative;
}
#formTag{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
button{
color:#000;
font-weight: bold;
width: 80px;
height: 30px;
background-color:deeppink;
border: none;;
}
input{
width: 200px;
height: 30px;
padding: 10px;
}
h1{
font-size: 60px;
text-align: center;
color:greenyellow;
margin: 140px 20px;
}
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
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);
paintGreeting(username);
}
function paintGreeting(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 {
paintGreeting(savedUsername);
}