ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL]Day 17. addEventListener 에 대해
    IT 지식 2020. 9. 23. 19:30
    728x90

    자바스크립트의 활용성이 커짐에 따라 웹에서는 다양한 이벤트를 발생시킬 수 있게 되었습니다. 이러한 이벤트의 발전은 웹 개발을 프론트엔드와 백엔드를 분화시키는데 큰 기여를 하게 되었습니다. 

     

    오늘은 자바스크립트의 기능 중 이벤트를 달 때 사용하는 함수인 addEventListener에 대해 알아보도록 하겠습니다.

     

    1. addEventListener란?

     

    addEventListener는 앞서 말씀드렸다시피 이벤트를 달때 사용하는 함수입니다. 이 단어를 직역하자면, '이벤트를 듣고 있는 함수를 더해주겠다.'는 의미가 되죠. addEventListener는 개발자가 정한 특정 이벤트를 주시하고 있다가 그 이벤트가 발생할 때 인자로 받은 함수를 실행시켜줍니다.

     

    예시를 들어보면 다음과 같습니다.

    요소.addEventListener(이벤트종류, function() {
      //이벤트가 일어났을 때 실행할 내용
    });

     

    특정 요소에 addEventListener 함수를 붙이고(호출하고), 인자로 이벤트 종류와, 이벤트가 발생했을 때 실행할 함수를 전달합니다. 이렇게 인자로 전달된 함수를 콜백 함수라고 부릅니다. 

     

    2. 이벤트 종류

     

    공식 문서에 나와있는 이벤트의 종류를 조금만 알아보도록 하겠습니다. 이벤트의 종류는 엄청나게 많지만, 그 중 자주 쓰이는 이벤트의 종류는 많지 않습니다. 마치 html의 태그 종류가 많지만, 자주 쓰이는 태그는 한정되어 있는 것처럼 말이죠.

     

    그다지 많지 않다고 한 것은 교수님의 입장이었다...

     

    addEventListener에 위에 해당하는 이벤트를 인자로 받아 개발자가 원하는 함수를 작동시키게 되는 것입니다.

     

    3. 예시

     

    간단한 예시를 통해 addEventListener에 대해 좀 더 익숙해져보도록 하겠습니다.

     

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>repl.it</title>
        <link href="index.css" rel="stylesheet" type="text/css" />
      </head>
      <body>
        <div class="login-container">
          <input type="password" id="password" placeholder="비밀번호" />
          <input type="password" id="re-password" placeholder="비밀번호 확인" />
          <button class="login-btn">로그인</button>
          <p class="alert"></p>
          <p>key code: <span id="code"></span></p>
        </div>
        
        <script src="index.js"></script>
      </body>
    </html>
    * {
      box-sizing: border-box;
    }
    
    .login-container {
      width: 200px;
      margin: 20px auto;
    }
    
    .login-container input {
      width: 100%;
      height: 30px;
      margin-bottom: 5px;
      padding-left: 10px;
    }
    
    .login-btn {
      width: 100%;
      height: 30px;
      text-align: center;
      font-size: 14px;
      background-color: #659672;
      color: white;
    }
    
    .login-btn:hover {
      cursor: pointer;
      opacity: 0.85;
    }
    const thisIsRepassword = document.getElementById('re-password');
    const thisIsAlert = document.getElementsByClassName('alert')[0];
    
    thisIsRepassword.addEventListener('keyup', function() {
      const password = document.getElementById('password').value;
      const rePassword = document.getElementById('re-password').value;
      
      if (password !== rePassword) {
        thisIsAlert.innerHTML = "비밀번호가 일치하지 않습니다"
      } else {
        thisIsAlert.innerHTML = ""
      }
    });

     

    위의 코드를 실행시키면 초기 화면은 다음과 같습니다.

     

     

    그리고 자바스크립트에 코딩되어 있는 것처럼 비밀번호와 비밀번호 확인 란에 password를 입력하면 두 요소의 value를 확인한 후 비교하여 값이 다르다면 아래의 첫 번째 사진이, 같다면 두 번째 사진과 같은 화면이 나오게 됩니다.

     

     

    4. 마치며

     

    오늘 예시로 들어드린 사례는 앞으로 우리가 마주쳐야할 이벤트의 시작에 불과합니다. 어쩌면 프론트엔드 개발자로서의 첫발을 내딛은 수준이라고도 할 수 있겠네요. 아직은 익숙하지 않아 다루는 것이 서툴지 몰라도 자주 연습하다보면 몰라보게 성장한 자신을 발견하게 되실 수도 있습니다. 

     

    결국 개발을 잘하는 왕도는 수많은 연습이라고 할 수밖에 없겠네요 

     

    제 심정이 반영되어 있네요

     

    728x90

    'IT 지식' 카테고리의 다른 글

    [TIL]Day 19. 문자 인코딩이란?  (0) 2020.09.29
    [TIL]Day 18. 라이브러리? 프레임 워크?  (0) 2020.09.28
    [TIL]Day 16. HTTP와 DOM의 개념  (0) 2020.09.22
    [TIL]Day 15. JS 정리(2)  (0) 2020.09.21
    [TIL]Day 14. js 정리(1)  (0) 2020.09.16

    댓글

Designed by Tistory.