Javascript Study

Javascript 이벤트(addEventListener)

짤진이 2023. 11. 18. 02:40
반응형

index.html

<!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">
  <title>Document</title>
  <script defer src="main.js"></script>
  <style>
    form {
      padding: 10px;
      border: 4px solid transparent;
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }
    form.active{
      border-color: orange;
    }
  </style>
</head>
<body>
  <form>
    <input type="'text" placeholder="'ID">
    <input type="password" placeholder="PW">
    <button type="submit">제출</button>
    <button type="reset">초기화</button>
  </form>
</body>
</html>

 

 

main.js

const formEl = document.querySelector("form");
const inputEls = document.querySelectorAll("input");

inputEls.forEach((el) => {
  el.addEventListener("focus", () => {
    formEl.classList.add("active");
  });
  el.addEventListener("blur", () => {
    formEl.classList.remove("active");
  });
  el.addEventListener("change", (evnet) => {
    console.log(event.target.value);
  });
});

formEl.addEventListener("submit", (event) => {
  event.preventDefault(); // 기본동작방지 submit 이벤트가 발생하면 새로고침되므로 추가한 것
  const data = {
    id: event.target[0].value,
    pw: event.target[1].value,
  };
  console.log("제출!", data);
});

formEl.addEventListener("reset", (event) => {
  console.log("리셋");
});

 

form인 태그를 fromEl로 받아주고 input 태그 전부를 inputEls로 받아준다.

inputEls 중 for문을 돌려서 값을 el로 받아주는데 focus를 얻었을 때, blur가 되었을 때 classList를 통해 class에 active 값을 추가, 삭제할 수 있다.

 

input = 값이 변경되었을 때

change = 상태가 변경되었을 때

input요소에 글자를 입력하면 target 즉 이벤트 요소가 console에 출력된다.

 

 

data 객체데이터 할당

id , pw 속성이 있는데 target은 formEl을 가리키므로

formEl 의 첫번째 요소는 input 태그 즉 id를 가리키고

두번쨰 요소는 두번째 input 태그 즉 pw를 가리킨다.

 

form 요소를 사용할 필요는 없지만 사용하게 되면 submit, reset 이벤트를 사용하기 쉽다.

 

formEl.addEventListerner('reset', event => {console.log('reset')})은 event가 발생했을 때 콘솔로그를 띄워주는 형식이다.

반응형