Momentum만들기(JavaScript기초)
JavaScript정리 6일차(preventDefault(), localStorage, 문자열보간)
KimYHG
2021. 12. 24. 01:57
preventDefault() (Function과 Event의 동작)
- 공통점 : 실행시 EventArgument Object를 넣어줘서 실행시킨다.
- 차이점 : 넣어주는 타이밍이 다르다. Function은 브라우저가 즉시 EventArgument Object를 ( )에 넣어 줘서 자동으로 실행하고 Event는 동작활성화 때 EventArgument Object를 ( )에넣어 줘서 실행시킨다.
예시
// HTML 일부
<form id="login-form" class="hidden">
<input required maxlength="15" type="text" placeholder="What is your name?" />
<input type="submit" vale="Log In" />
</form>
<h1 id="greeting" class="hidden"></h1>
/* JS */
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";
const savedUsername = localStorage.getItem(USERNAME_KEY);
function onLoginSubmit(event){
const username = loginInput.value;
event.preventDefault(); //form의 기본submit 기능을 멈춘다
//console.dir(event);
loginForm.classList.add(HIDDEN_CLASSNAME);
paintGreeting(username);
localStorage.setItem(USERNAME_KEY, username); //localStorage라는 DB를 활용
}
//onLoginSubmit();
if(savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit", onLoginSubmit);
}else{
paintGreeting(savedUsername);
}
function paintGreeting(name){
greeting.innerText = `Hello ${name}`; //c#에서는 $"Hello {name}"로 사용
greeting.classList.remove(HIDDEN_CLASSNAME);
}
localStorage
- 브라우저에 기억할 수 있게 하는 API / 미니 DB같은 느낌
- 예시는 위에 같이
- 자주 사용하는 함수 : localStorage.getItem(KEY) / localStorage.setItem(KEY, value)
문자열보간(C#과 비교)
`Hello ${name}`; <==> $"Hello {name}";
- 문자열보간을 쓰고 싶을 때 `(물결표시와 같이 있는 문자/그레이브)를 사용
Template literals - JavaScript | MDN
템플릿 리터럴은 내장된 표현식을 허용하는 문자열 리터럴입니다. 여러 줄로 이뤄진 문자열과 문자 보간기능을 사용할 수 있습니다. 이전 버전의 ES2015사양 명세에서는 "template strings" (템플릿 문
developer.mozilla.org