프론트엔드/JavaScript

이벤트

Ryuzy 2025. 4. 16. 00:56
728x90
반응형

1. 이벤트

자바스크립트에서 이벤트(Event)는 사용자가 웹 페이지와 상호작용할 때 발생하는 특정 동작이나 상황을 의미합니다. 예를 들어 버튼 클릭, 키보드 입력, 마우스 이동, 폼 제출, 창 닫기 등이 모두 이벤트에 해당하며, 이러한 이벤트에 대해 자바스크립트가 특정 반응(동작)을 하도록 코드를 작성할 수 있습니다. 이를 위해 addEventListener() 같은 메서드를 사용해 특정 요소에 이벤트 리스너를 등록하거나, HTML 요소에 직접 onclick, onchange 같은 이벤트 속성을 사용할 수 있습니다. 이벤트는 사용자와의 실시간 상호작용을 처리하는 데 필수적이며, 동적인 웹 페이지를 만드는 핵심 요소로 작동합니다.

 

1. HTML 이벤트 속성 방식

<button onclick="sayHello()">인사하기</button>

<script>
  function sayHello() {
    alert("안녕하세요!");
  }
</script>

 

2. DOM 속성 방식 (element.onclick)

<button id="btn">누르세요</button>

<script>
  const btn = document.getElementById("btn");
  btn.onclick = function () {
    alert("버튼이 클릭되었습니다!");
  };
</script>

 

3. addEventListener() 방식

<button id="eventBtn">이벤트 리스너 사용</button>

<script>
  const eventBtn = document.getElementById("eventBtn");

  eventBtn.addEventListener("click", function () {
    alert("addEventListener로 연결된 이벤트입니다.");
  });

  // 같은 요소에 다른 이벤트도 추가 가능
  eventBtn.addEventListener("mouseenter", function () {
    eventBtn.style.backgroundColor = "lightblue";
  });
</script>

 

주요 이벤트 종류

 

 

2. 이벤트 객체

이벤트 객체(Event Object)는 자바스크립트에서 이벤트가 발생했을 때 브라우저가 자동으로 생성하여 이벤트 핸들러 함수에 전달하는 정보 덩어리입니다. 이 객체에는 이벤트의 종류(type), 이벤트가 발생한 대상(target), 마우스 위치(clientX, clientY), 눌린 키(key), 기본 동작 제어 메서드(preventDefault()), 이벤트 전파 제어 메서드(stopPropagation() 등 다양한 속성과 메서드가 담겨 있습니다. 이벤트 핸들러 함수에서 매개변수로 event를 받아 사용할 수 있으며, 이를 통해 사용자의 행동에 더 정밀하게 반응할 수 있습니다. 예를 들어 사용자가 어떤 버튼을 클릭했는지, 어떤 키를 눌렀는지, 입력 필드를 어떻게 조작했는지를 이벤트 객체를 통해 알아내고 처리할 수 있습니다. 이 객체는 동적이고 인터랙티브한 웹 페이지를 구현하는 데 매우 중요한 역할을 합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>이벤트 객체</title>
  <style>
    #clickArea {
      width: 300px;
      height: 150px;
      background-color: #f0f0f0;
      border: 1px solid #aaa;
      line-height: 150px;
      text-align: center;
      margin-bottom: 20px;
    }
  </style>
</head>
<body>
  <h2>이벤트 객체를 확인해보세요</h2>

  <div id="clickArea">여기를 클릭하세요</div>
  <input type="text" id="inputBox" placeholder="키보드를 눌러보세요" />

  <script>
    // 1. 마우스 클릭 시 이벤트 객체 확인
    document.getElementById("clickArea").addEventListener("click", function(event) {
      alert(
        `클릭한 위치 (좌표): X=${event.clientX}, Y=${event.clientY}\n` +
        `이벤트 타입: ${event.type}\n` +
        `이벤트 대상 ID: ${event.target.id}`
      );
    });

    // 2. 키보드 입력 시 이벤트 객체 확인
    document.getElementById("inputBox").addEventListener("keydown", function(event) {
      console.log("입력된 키:", event.key);
      console.log("코드:", event.code);
      console.log("이벤트 발생한 요소:", event.target);
    });

    // 3. 기본 동작 막기 예제 (Enter 키 막기)
    document.getElementById("inputBox").addEventListener("keypress", function(event) {
      if (event.key === "Enter") {
        event.preventDefault();  // 엔터키 눌러도 form 제출 같은 동작 안 함
        alert("Enter 키는 막아두었어요!");
      }
    });
  </script>
</body>
</html>

 

728x90
반응형

'프론트엔드 > JavaScript' 카테고리의 다른 글

JSON  (0) 2025.04.16
정규식  (0) 2025.04.16
Document Object Model  (0) 2025.04.15
Browser Object Model  (1) 2025.04.15
내장 객체  (1) 2025.04.15