바닐라 JS로 크롬 앱 만들기 (2022/01/08) by 노마드 코더 (5)

2022. 1. 8. 04:05·Study/JS
<!DOCTYPE html>
<html lang="en">

<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.css">
    <title>Momentum app</title>
</head>

<body>
    <form id="login-form">
        <input required maxlength="15" type="text" placeholder="What is your name?">
        <button>Log In</button>
    </form>
    <script src="app.js"></script>

</body>

</html>

 

const loginForm = document.querySelector("#login-form")
const loginInput = document.querySelector("#login-form input")

function onLoginBtnSubmit(tomato){
    tomato.preventDefault();
    console.log(tomato)
}

loginForm.addEventListener("submit",onLoginBtnSubmit)

 

preventDefault

 

기본적으로 form을 사용해서 submit을 하는 경우 페이지 전체가 새로고침 된다

그래서 그것을 막기 위한 function이다

모든 EventListener function의 첫번째 argument는 항상 지금 벌어진 정보를 제공한다

 

SubmitEvent {isTrusted: true, submitter: button, type: 'submit', target: form#login-form, currentTarget: form#login-form, …}
isTrusted: true
bubbles: true
cancelBubble: false
cancelable: true
composed: false
currentTarget: null
defaultPrevented: true
eventPhase: 0
path: (5) [form#login-form, body, html, document, Window]
returnValue: false
srcElement: form#login-form
submitter: button
target: form#login-form
timeStamp: 1685.6000000238419
type: "submit"
[[Prototype]]: SubmitEvent

console로 출력한 정보

중요한 것은 방금 일어난 Event의 대한 정보라는 것

submitter는 Button으로 부터이고 target은 form

timeStamp는 언제 submit 되었는가

 

이 정보를 가지고 event의 관한것을 알 수 있다

const loginForm = document.querySelector("#login-form")
const loginInput = document.querySelector("#login-form input")

function onLoginBtnSubmit(event){
    event.preventDefault()
    console.log(event)
}

loginForm.addEventListener("submit",onLoginBtnSubmit)

 

위에는 tomato로 첫번째 argument를 받았지만 event로 받는 것이 관행이다

preventDefault를 정리하자면 브라우저의 기본기능을 stop 하는 것이다

 

 

 

const loginForm = document.querySelector("#login-form")
const loginInput = document.querySelector("#login-form input")
const h1 = document.querySelector("h1")

function onLoginBtnSubmit(event) {
    event.preventDefault()
    const username = loginInput.value
    loginForm.classList.add("hidden")
    h1.classList.remove("hidden")
    console.log(username)
}

function handleLinkClick(event) {
    event.preventDefault()
    
}
loginForm.addEventListener("submit", onLoginBtnSubmit)

 

element.classList.add("className")

element.classList.remove("className")

 

element의 className을 추가하거나 제거해줄 수 있는 기능

 

 

const HIDDEN_CLASSNAME = "hidden"

일반적으로 string만 포함된 변수는 대문자로 표기하고 string을 저장하고 싶을 때 사용 (관습)

 

 

 

h1.innerText = "Hello " + username
h1.innerText = `Hello ${username}`

 위 두 개는 같다

"" '' 이 아닌 `` 이다

변수는 ${variable} 로 사용한

'Study > JS' 카테고리의 다른 글

바닐라 JS로 크롬 앱 만들기 (2022/01/06) by 노마드 코더 (4)  (0) 2022.01.06
바닐라 JS로 크롬 앱 만들기 (2022/01/05) by 노마드 코더 (3)  (0) 2022.01.05
바닐라 JS로 크롬 앱 만들기 (2022/01/03) by 노마드 코더 (2)  (0) 2022.01.03
바닐라 JS로 크롬 앱 만들기 (2022/01/02) by 노마드 코더  (0) 2022.01.02
'Study/JS' 카테고리의 다른 글
  • 바닐라 JS로 크롬 앱 만들기 (2022/01/06) by 노마드 코더 (4)
  • 바닐라 JS로 크롬 앱 만들기 (2022/01/05) by 노마드 코더 (3)
  • 바닐라 JS로 크롬 앱 만들기 (2022/01/03) by 노마드 코더 (2)
  • 바닐라 JS로 크롬 앱 만들기 (2022/01/02) by 노마드 코더
개발새발개발
개발새발개발
  • 개발새발개발
    끄저억끄저억
    개발새발개발
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • Study (45)
        • DB (9)
        • WEB (11)
        • Spring (14)
        • JS (5)
        • Python (2)
        • IntelliJ (4)
      • 이슈 해결 (2)
      • Challenge (4)
        • 구름톤 챌린지 (3)
        • 자격증 (0)
      • 우아한테크코스 (2)
      • Dev Camp 3기 (0)
      • 개발 Tip (3)
      • 일상 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    싱글톤
    realforce r3
    레디스
    Spring
    Redis
    DBMS
    web
    객체지향
    스프링
    우테코
    IntelliJ
    우아한테크코스
    Java
    singleton
    김영한
    JPA
    til
    db
    jwt
    NULL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발새발개발
바닐라 JS로 크롬 앱 만들기 (2022/01/08) by 노마드 코더 (5)
상단으로

티스토리툴바