JavaScript

Chapter 3-20. 이벤트 핸들링(javascript)

Chansman 2025. 4. 1. 10:20

자바스크립트 이벤트와 이벤트 핸들링

이번 포스트에서는 웹 프로그래밍에서의 이벤트이벤트 핸들링에 대해 자세히 설명합니다. 자바스크립트에서 발생하는 다양한 이벤트를 처리하고, 이를 통해 사용자와의 상호작용을 어떻게 구현하는지에 대해 알아보겠습니다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" contect="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>이벤트 & 이벤트 핸들링링</title>
    
</head>
<body>
    <button id="span">SPAN</button>
    <button id="strong">STRONG</button>
    <button id="mark">MARK</button>

    <script>
       const spanBtn = document.getElementById("span")
       const strongBtn = document.getElementById("strong")
       const markBtn = document.getElementById("mark")
        
        spanBtn.onclick = function(){
            alert("클릭했어요!")
        }

        function handleClick(){           
            alert("클릭했어요!")
        }

        spanBtn.onclick = handleClick

        spanBtn.onclick = function(){
            const span = document.createElement("span")
            span.textContent = "새로 생긴 span 태그입니다"
            document.body.append(span)
        }

        // 첫번째 코드 개별 addEventListener 사용
        // 직관적이고 간단하고 독립적이지만 중복코드와 확장성이 떨어진다.

         spanBtn.addEventListener("click", function(){
            const span = document.createElement("span")
            span.textContent = "새로 생긴 span 태그입니다"
            document.body.append(span)
        })

        strongBtn.addEventListener("click", function(){
            const strong = document.createElement("strong")
            strong.textContent = "새로 생긴 strong 태그입니다"
            document.body.append(strong)
        })

        markBtn.addEventListener("click", function(){
            const mark = document.createElement("mark")
            mark.textContent = "새로 생긴 mark 태그입니다"
            document.body.append(mark)
        })

        // 두 번째 코드 (공통 이벤트 핸들러 사용)
        // 코드중복최소화,확장성, 가독성향상되나 초기화지연 복잡성이증가될수있다.


        const handleClick = function(event){
            if(event.target.id == "span"){
            const span = document.createElement("span")
            span.textContent = "span 태그"
            document.body.append(span)
        } else if(event.target.id == "strong"){
            const strong = document.createElement("strong")
            strong.textContent = "strong 태그"
            document.body.append(strong)
        } else if(event.target.id == "mark"){
            const mark = document.createElement("mark")
            mark.textContent = "mark 태그"
            document.body.append(mark)
        }
    }

        spanBtn.addEventListener("click", handleClick)
        strongBtn.addEventListener("click", handleClick)
        markBtn.addEventListener("click", handleClick)
     
    </script>
    
</body>
</html>

📌 이벤트란?

이벤트란, 웹 페이지에서 사용자와의 상호작용을 나타내는 동작을 의미합니다. 예를 들어, 사용자가 버튼을 클릭하거나, 키보드를 눌렀을 때 발생하는 다양한 행동들을 이벤트라고 합니다.

🔹 웹에서 발생할 수 있는 이벤트 예시

  • 클릭 이벤트: 사용자가 버튼을 클릭할 때
  • 키 다운 이벤트: 사용자가 키보드를 눌렀을 때
  • 폼 제출 이벤트: 사용자가 폼을 제출할 때
  • 그 외 다양한 상호작용 이벤트들이 있습니다.

📋 이벤트 핸들링 (Event Handling)

이벤트 핸들링이란, 이벤트가 발생했을 때 그에 맞는 처리 함수를 정의하는 과정을 말합니다. 이벤트 핸들러는 이벤트가 발생하면 실행될 함수를 의미하며, 이를 통해 우리가 원하는 동작을 처리할 수 있습니다.

🔹 이벤트 핸들러 등록

이벤트 핸들러는 다음 두 가지 방법으로 등록할 수 있습니다:

  1. 이벤트 속성 사용
  2. addEventListener() 메소드 사용

🔸 이벤트 속성 사용 예시

<button onclick="alert('환영합니다!')">클릭하세요</button>
  • onclick 속성을 통해 버튼 클릭 시 경고창을 띄우는 이벤트를 등록합니다.

🔸 addEventListener() 메소드 사용

addEventListener() 메소드는 더 유연한 방식으로 이벤트 핸들러를 등록하고, 여러 개의 이벤트 핸들러를 하나의 요소에 추가할 수 있게 해줍니다. 또한 이벤트 핸들러 제거도 가능합니다.

예시

let button = document.querySelector('button');
button.addEventListener('click', function() {
  alert('환영합니다!');
});
  • **addEventListener()**를 사용하면 여러 개의 이벤트 핸들러를 하나의 요소에 추가하거나 이벤트 핸들러를 제거할 수 있습니다.

📋 이벤트 객체 (Event Object)

이벤트가 발생하면, 자바스크립트는 **이벤트 객체(Event Object)**를 이벤트 핸들러 함수에 자동으로 전달합니다. 이 객체는 이벤트와 관련된 다양한 정보를 담고 있으며, 이를 통해 더 많은 기능을 활용할 수 있습니다.

예시

button.addEventListener('click', function(event) {
  console.log(event.target); // 이벤트가 발생한 대상 요소
  console.log(event.type);   // 이벤트 종류
});
  • event.target: 이벤트가 발생한 대상 요소를 참조합니다.
  • event.type: 발생한 이벤트의 종류를 반환합니다.

🚩 정리

  • 이벤트는 사용자의 상호작용을 나타내며, 이를 통해 웹 페이지의 동작을 제어할 수 있습니다.
  • 이벤트 핸들링은 이벤트가 발생했을 때 함수를 실행하는 과정으로, 이를 통해 페이지의 반응성을 높일 수 있습니다.
  • **addEventListener()**는 더 유연하게 이벤트를 처리할 수 있는 메소드이며, 여러 이벤트 핸들러를 동시에 적용하거나 제거할 수 있습니다.
  • 이벤트 객체는 이벤트 관련 정보를 제공하며, 이를 활용하여 더 복잡한 이벤트 처리를 할 수 있습니다.