본격적으로 웹앱을 만들어보자
<div id="login-form">
<input type="text" placeholder="what is your name?"/>
<button>Log In</button>
</div>

const loginForm = document.getElementById("login-form")
const loginInput = loginForm.querySelector("input")
const loginButton = loginForm.querySelector("button")
const loginInput = document.querySelector("#login-form input")
const loginButton = document.querySelector("#login-form button")
👉console.dir() 으로 확인한다!
function onLoginBtnClik(){ console.dir(loginInput) } loginButton.addEventListener("click", onLoginBtnClik)👉그렇구나,
loginInput.value구나!
required, maxlength을 이용하면 간단.<body>
<form id="login-form">
<input required maxlength="15"
type="text" placeholder="what is your name?"/>
<input type="submit" value="Log In" />
</form>
<script src="app.js"></script>
</body>
event라는 argument에 js가 이벤트 동작 시 발생하는 여러가지 정보를 객체 형태로 담아준다. defaultPrevented: true엔터를 쳤을 때: 새로고침 되지 않는다
const loginForm = document.querySelector("#login-form") const loginInput = document.querySelector("#login-form input") function onLoginSubmit(event){ event.preventDefault() console.log(event) } loginForm.addEventListener("submit", onLoginSubmit)
링크를 클릭했을 때: 해당 링크를 열지 않는다
function handleLinkClick(event) { event.preventDefault() console.dir(event) } link.addEventListener("click", handleLinkClick)
- 강의에선 MouseEvent던데 왜 PointerEvent라고 표시되는지 모르겠다..
hidden 클래스를 설정해서 로그인버튼을 클릭하면
입력창은 안 보이게하고 인삿말과 함께 입력값을 화면에 띄워보자
<form id="login-form">
<input required maxlength="15" type="text"
placeholder="what is your name?"/>
<input type="submit" value="Log In" />
</form>
<form>
<h1 id="greeting" class="hidden"></h1>
</form>
.hidden {
display: none;
}
입력 전후로 element 탭에서 hidden 클래스의 추가/삭제는 확인됐는데는데 화면이 전혀 표시되지 않아서 당황했다. 알고보니 css파일을 연결해주는 link태그를 작성하지 않아서 그랬음..ㅋㅋ
const greeting = document.querySelector("#greeting")
const HIDDEN_CLASSNAME = "hidden"
// 네이밍 컨벤션: string값만 담은 경우 대문자로 변수명을 정한다
function onLoginSubmit(event){
event.preventDefault()
// submit을 수행시 브라우저 새로고침이 발생하는데 그걸 막는 역할
const username = loginInput.value;
loginForm.classList.add(HIDDEN_CLASSNAME)
greeting.innerText = `Hello ${username}`
greeting.classList.remove(HIDDEN_CLASSNAME)
}
loginForm.addEventListener("submit", onLoginSubmit)
4.4에서 입력된 username을 localStorage에 저장하는 방법
- localStorage.setItem(key, value): 저장
- localStorage.getItem(key): 조회
- localStorage.removeItem(key): 삭제
function onLoginSubmit(event){
event.preventDefault()
const username = loginInput.value;
loginForm.classList.add(HIDDEN_CLASSNAME)
localStorage.setItem("username", username) // 👈
greeting.innerText = `Hello ${username}`
greeting.classList.remove(HIDDEN_CLASSNAME)
}
