JavaScript

[자바스크립트] 정리3

재키재키 2022. 1. 18. 18:16

1.

HTML에서 input의 유효성 검사를 하기위해서는 form tag 안에 넣어주어야 한다. 
form 내부에서 
input 안에 있는 button 또는 enter을 누루거나  type이 submit인 input을 클릭하면 자동으로 input이 submit 된다. 
이 경우 Javascript에서 clickevent를 따로 정의 해주지 않아도 괜찮다.   

<!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</title>
</head>
<body>
    <form id="login-form">
        <input 
            required 
            maxlength="15" 
            type="text" 
            placeholder="What is your name?""
        />
        <!-- <button>Log In</button> -->
        <input type="submit" value="Log In" />
    </form>
   
    <script src="app.js"></script>
</body>
</html>

 

2. 누군가 form을 submit하면 브라우저는 default로 페이지를 새로고침을 하도록 되어있다..

3. addEventListenr 의 첫번째 argument는 항상 발생된 event에 대한 정보를 제공한다. 따라서 event.preventDefault()를 해주어야 한다. 

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

function onLoginSubmit(event){
    event.preventDefault(); // 새로고침 되는 것을 방지 
    console.dir(event); // submitEvent
    
    const userName = loginInput.value;
    console.log(userName);
}

loginForm.addEventListener("submit", onLoginSubmit);

 

4. form의 경우 submitEvent를 anchor의 경우 pointerEvent를 각각 전달한다. 

const link = document.querySelector("a");

function handleLinkClcik(event){
    event.preventDefault();
    console.dir(event); // pointerEvent
}

link.addEventListener("click", handleLinkClcik);

 

5. HTML element를 숨기고 싶다면 CSS에서 hidden class를 정의하고 해당 element의 calssList에 추가해준다.

 

6. only string으로만 이루어진 변수는 중요하지 않기에 대문자로 표기하는게 관습이다.  

 - 여러번 반복해서 사용할 문자열들은 대문자인 변수로 따로 만들어두자(오타시 오류가 나도록 코딩)

 

7. `(백틱)과 ${변수}를 사용한 템플릿 문자열을 사용할 수 있다. (파이썬의 f문자열과 동일)

.hidden{
    display: none;
}
const loginInput = document.querySelector("#login-form input");
const loginForm = document.querySelector("#login-form");
const greeting = document.querySelector("#greeting");

const HIDDEN_CLASSNAME = "hidden"; // string만 포함된 변수는 대문자로 표기하는게 관습

function onLoginSubmit(event){
    event.preventDefault(); 
    loginForm.classList.add(HIDDEN_CLASSNAME);
    const username = loginInput.value;

    greeting.innerText = "Hello " + username;
    greeting.innerText = `Hello ${username}`; // 템플릿 문자열
    greeting.classList.remove(HIDDEN_CLASSNAME);
}

loginForm.addEventListener("submit", onLoginSubmit);