본문 바로가기
인간은 어떻게 배울까

[JS] 이벤트 핸들러 2, ~.js에서만 작성하기

by 개발하는 아인 2023. 5. 31.

앞서 살펴본 방법은 두가지였습니다.

hmtl 파일 안에서 만들기 / html 파일 안에서 일부 + JS 파일에서 일부 만들기

 

이번에는 JS 파일에서만 작성하여 동작시키는 방법을 알아보겠습니다.

 

그러기 위해서 필요한 것은 .addEventListener() 라는 함수입니다.

이 함수는 어떤 객체 뒤에 꼬리표로 붙여 사용하는 메소드입니다.

그렇다면 어떤 객체 뒤에 붙일까요?

네, 우리가 제어하길 원하는 html 객체 뒤에 붙입니다.

그러면 그 객체에다 이벤트가 발생시 할일을 하는 함수 '이벤트 핸들러'를 등록해줍니다.

 

그런데 앞에서 말했듯이 html파일은 건드리지 않는다고 했습니다.

즉 html파일은 건드리지 않고 js파일 내에서 리모컨으로 조종하듯 html의 요소를 요리조리 제어하는 겁니다.

 

형식은 이렇습니다.

 

객체.addEventListener(이벤트명, 함수이름)

 

실제 코드를 볼게요.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>

    <button name="red"  class="fruit" id="apple">apple</button>
	<button name="yellow"  class="fruit" id="banana">banana</button>
    <button name="red"  class="vegetable" id="carrot">carrot</button>
	<button name="white"  class="vegetable" id="onion">onion</button>
    <p id="text"></p>
<script src="index.js"></script>
  
</body>
</html>
// JS 파일입니다.
// 1. html문서에서 아이디가 "carrot"인 요소를 선택
var carrot_btn = document.getElementById('carrot'); 

var btn1 = document.getElementById('apple'); 
var btn2 = document.getElementById('banana'); 
var btn3 = document.getElementById('onion'); 

// 2. click 할 시 텍스트를 보여주는 함수
//    버튼을 클릭하면 "토끼가 나타났어요!!" 문장을 출력하도록 해보세요
function hideText() {
    document.getElementById("text").innerHTML = "";
};

// 3. 선택한 요소에 "click" 이벤트 핸들러를 등록 (이벤트명:"click", 함수이름)
// carrot_btn.addEventListener("click", showText) ;  
btn1.addEventListener("click", hideText);
btn2.addEventListener("mouseover", hideText);
btn3.addEventListener("click", hideText);

// 아니면 아래처럼 직접 함수를 넣어줄 수도 있다.
carrot_btn.addEventListener("click", function showText(){
    document.getElementById("text").innerHTML = "토끼가 나타났어요!!";
})

 

등록할 수 있는 이벤트로는 "click", "mouseover" 같이 기본적으로 많이 쓰이는 것을 포함해서 아래와 같이 다양합니다.

 

  1. "click": 클릭 이벤트
  2. "dblclick": 더블 클릭 이벤트
  3. "mouseover": 마우스 오버 이벤트
  4. "mouseout": 마우스 아웃 이벤트
  5. "mouseenter": 마우스 진입 이벤트
  6. "mouseleave": 마우스 이탈 이벤트
  7. "keydown": 키 다운 이벤트
  8. "keyup": 키 업 이벤트
  9. "keypress": 키 누름 이벤트
  10. "input": 입력 이벤트
  11. "change": 변경 이벤트
  12. "submit": 폼 제출 이벤트
  13. "focus": 포커스 이벤트
  14. "blur": 포커스 아웃 이벤트
  15. "scroll": 스크롤 이벤트
  16. "resize": 리사이즈 이벤트
  17. "load": 로드 이벤트
  18. "unload": 언로드 이벤트
  19. "dragstart": 드래그 시작 이벤트
  20. "dragend": 드래그 종료 이벤트