Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 눌린 화살표 키(방향키) 감지하는 방법

JavaScript에서 사용자가 누른 화살표 키(방향키)를 감지하려면 keydown 이벤트 리스너와 event.keyCode 값을 활용하면 됩니다. 각 화살표 키는 고유한 keyCode를 가지며, 그 값은 다음과 같습니다.

  • 37: 왼쪽 화살표 키
  • 38: 위쪽 화살표 키
  • 39: 오른쪽 화살표 키
  • 40: 아래쪽 화살표 키

예제

다음은 <body> 요소에 keydown 이벤트를 등록하고, switch 문으로 눌린 화살표 키를 판별한 후 화면에 결과를 출력하는 전체 코드입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
   font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.sample {
   font-size: 18px;
   font-weight: 500;
}
</style>
</head>
<body>
<h1>눌린 화살표 키 감지하기</h1>
<div class="sample"></div>
<h3>
어떤 화살표 키가 눌렸는지 확인하려면 아무 화살표 키나 눌러보세요
</h3>
<script>
let fillEle = document.querySelector(".sample");
document.body.addEventListener("keydown", (event) => {
   switch (event.keyCode) {
      case 37:
         fillEle.innerHTML = "왼쪽 키가 눌렸습니다";
      break;
      case 38:
         fillEle.innerHTML = "위쪽 키가 눌렸습니다";
      break;
      case 39:
         fillEle.innerHTML = "오른쪽 키가 눌렸습니다";
      break;
      case 40:
         fillEle.innerHTML = "아래쪽 키가 눌렸습니다";
      break;
   }
});
</script>
</body>
</html>

실행 결과

페이지를 처음 열었을 때의 화면입니다.

JavaScript에서 눌린 화살표 키(방향키) 감지하는 방법

이 상태에서 네 개의 화살표 키 중 하나를 누르면, 어떤 키가 눌렸는지 즉시 화면에 표시됩니다.

JavaScript에서 눌린 화살표 키(방향키) 감지하는 방법

참고: 최신 방식(event.key) 사용하기

keyCode는 현재 웹 표준에서 폐기(deprecated)된 속성이므로, 최신 브라우저 환경에서는 event.key 속성을 사용하는 것이 좋습니다. 화살표 키는 각각 ArrowLeft, ArrowUp, ArrowRight, ArrowDown 문자열로 구분할 수 있습니다.

document.body.addEventListener("keydown", (event) => {
   switch (event.key) {
      case "ArrowLeft":
         fillEle.innerHTML = "왼쪽 키가 눌렸습니다";
         break;
      case "ArrowUp":
         fillEle.innerHTML = "위쪽 키가 눌렸습니다";
         break;
      case "ArrowRight":
         fillEle.innerHTML = "오른쪽 키가 눌렸습니다";
         break;
      case "ArrowDown":
         fillEle.innerHTML = "아래쪽 키가 눌렸습니다";
         break;
   }
});

이처럼 keydown 이벤트만 활용하면 게임 조작, 슬라이더 이동, 캐러셀 제어 등 다양한 키보드 인터랙션을 손쉽게 구현할 수 있습니다.