본문 바로가기

JavaScript

17장 예제 - DOM에서 이벤트 처리하기 (1)

1. DOM 요소에 함수 직접 연결하기

 - 이벤트 처리기 함수가 간단하다면 DOM 요소에 직접 연결 가능

 

 - 이미지를 클릭하면 알림 창 표시하기 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>이미지를 클릭하면 알림창 표시하기 </title>
  <style>
   #container {
    width:300px;
    margin:10px auto;
   }
  </style>
</head>
<body>
  <div id="container">
    <img src="images/cup-1.png" id="cup">
  </div>

  <script>
    var cup = document.querySelector("#cup"); //id=cup 요소를 가져옴
    cup.onclick = function(){
      alert("이미지를 클릭했습니다");
    }
  </script>
</body>
 
 

 

2. 함수 이름을 사용해 연결하기 

 -이벤트가 발생했을 때 실행할 함수를 따로 정의해놓았다면 함수 이름을 사용해 연결할 수 있음

 - 이 경우에는 함수 이름 다음에 괄호(())를 추가하지 않음

 

-이미지를 클릭하면 함수 실행하기 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>이미지를 클릭하면 알림창 표시하기 </title>
  <style>
   #container {
    width:300px;
    margin:10px auto;
   }
  </style>
</head>
<body>
  <div id="container">
    <img src="images/cup-1.png" id="cup">
  </div>

  <script>
   var cup = document.querySelector("#cup"); //id=cup 요소를 가져옴
   cup.onclick = changePic; //cup을 클릭하면 changePic 함수를 실행

   function changePic() {
    cup.src ="images/cup-2.png"; //cup 요소의 경로를 다른 이미지 경로로 바꿈
   }
  </script>
</body>
 
</html>

 

3. DOM의 event 객체 알아보기 

 

- DOM에는 이밴트 정보를 저장하는 event 객체가 있음

- event 객체의 프로퍼티와 메서드 

프로퍼티 altKey 이벤트가 발생할 떄 Alt를 눌렀는지 여부를 boolean값으로 반환
button 마우스에서 누른 버튼의 키값을 반환
charCode keypress 이벤트가 발생했을 때 어떤 키를 눌렀는지 유니코드값으로 반환
clientX 이벤트가 발생한 가로위치 반환
clientY 이벤트가 발생한 세로위치 반환
ctrlKey 이벤트가 발생했을때 Ctrl 를 눌렀는지 여부를 boolean값으로 반환
pageX 현재 문서 기준으로 이벤트가 발생한 가로위치를 반환
pageY 현재 문서 기준으로 이벤트가 발생한 세로위치 반환
screenX 현재 화면 기준으로 이벤트가 발생한 가로위치 반환
screenY 현재 화면 기준으로 이벤트가 발생한 세로 위치 반환
shiftKey 이벤트가 발생할때 shift를 눌렀는지 여부를 boolean값으로 반환
target 이벤트가 최초로 발생한 대상을 반환
timeStamp 이벤트가 발생한 시간을 반환
type 발생한 이벤트 이름을 반환
which 키보드와 관련된 이벤트가 발생할 때 키의 유니코드값을 반환
메서드 preventDefault() 이벤트를 취소할 수 있는 경우에 취소

 -이미지에서 클릭한 위치 알아내기 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>이미지에서 클릭한 위치 알아내기</title>
  <style>
   #container {
    width:300px;
    margin:10px auto;
   }
  </style>
</head>
<body>
  <div id="container">
    <img src="images/cup-1.png" id="cup">
  </div>

  <script>
   var cup = document.querySelector("#cup");
   cup.onclick = function(event){
    //event 객체를 함수의 인수로 사용
    alert("이벤트 유형:"+event.type+"이벤트 발생 위치:"+event.pageX+","+event.pageY);
   }
  </script>
</body>
 
</html>

 

- event 객체에는 이벤트 정보만 들어 있음 

- 만약 이벤트가 발생한 대상에 접근하려면 이벤트 처리기에서 예약어 this를 사용해야함

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>이미지에서 클릭한 위치 알아내기</title>
  <style>
   #container {
    width:300px;
    margin:10px auto;
   }
  </style>
</head>
<body>
  <div id="container">
    <img src="images/cup-1.png" id="card">
  </div>

  <script>
    var card = document.querySelector("#card");
    card.onclick = function(event) {
      alert("클릭한 이미지 파일 :"+ this.src);
    }
  </script>
</body>
 
</html>