ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 이벤트(Event)와 이벤트리스너(Event Listener)
    WEBn/JavaScript 2021. 8. 8. 21:11

    이번 시간의 주제는

    Event 

    자바스크립트에서 아주 중요한 부분이다.

    그만큼 많이 자주 쓰이기 때문이다. 

     


    1. 이벤트(Event)

    자바스크립트와 HTML은 이벤트 핸들에 의해서 서로 상호작용한다. 브라우저에 어떤 부분을 클릭하거나 마우스를 올려놓거나 키를 입력하거나 화면이 줄거나 늘 때 등등 모든 동작에 이벤트가 발생한다. 사용자가 일으키는 다양한 이벤트들을 캐치해서 자바스크립트에서 원하는 행위를 구현할 수 있다.

     

    자주 쓰이는 간단한 예시를 살펴보자. 

    1
    2
    3
    4
    5
    6
    <p>Click this document to activate the handler.</p>
    <script>
      window.addEventListener("click", () => {
        console.log("You knocked?");
      });
    </script>
    cs

    자바스크립트를 배우는 사람은 꼭 접하게 되는 click 이벤트이다.

    브라우저의 아무곳이나 클릭하면 콘솔에 you knocked?라고 찍히게 된다.

     

    예시와 같이 사용자가 발생시키는 여러가지 이벤들을 캐치하여 내가 원하는 함수를 실행시키게 한다. 

    동작과정을 살펴보면 이렇다.

    이벤트(Event): 마우스 클릭, 키보드 입력 등의 사용자의 물리적 행위
    이벤트 객체(Event Object): 해당 이벤트에 대한 정보를 이벤트 리스너에게 전달
    이벤트 리스너(Event Listener): 이벤트를 전달 받았을 때 실행되는 자바스크립트 코드

     

    1. 이벤트 리스너(Event Listener)

    작성방법

    하나의 예시로 설명하고자 한다.

    1
    2
    3
    <div class="hello">
       <h1>Grab Me!</h1>
    </div>
    cs

    html 영역에 <h1>태그에 Grab Me! 문장을 클릭했을 때 발생하는 이벤트를 적용하고자 한다.

    이벤트 리스너는 script에 작성해야한다. script에 작성하는 내용이다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // querySelector로 <h1>태그를 title에 담기
    const title = document.querySelector("div.hello:first-child h1");
     
    // 이벤트가 발생할시 실행시킬 함수
    function handleTitleClick() {
        console.log("title was clicked");
        
    }
     
    // 이벤트 리스너, <h1>태그 클릭시 handleTitleClick 함수가 실행딘다.
    title.addEventListener("click", handleTitleClick);
    cs

    위의 예시에서는 브라우저 전체를 대상으로 했지만 이번에는 hello 클래스의 <h1>태그를 대상으로 하였다.

    대상.addEventListener("이벤트", 실행할 함수);

    이벤트리스너는 위와 같이 작성하면 된다. 이때 주의할 점은 원래 함수를 실행시킬 때 

    handleTitleClick() 이렇게 괄호를 붙여주지만, 이벤트 리스너를 쓸 때는 함수를 직접 실행시키는 것이 아닌 넘겨주기만 하고 JavaScript가 실행하도록 하기 때문에 ()를 붙이지 않는다.

    댓글

Designed by Tistory.