EverGiver

DOM에서 이벤트 처리하기 본문

Front-End (웹)/자바스크립트

DOM에서 이벤트 처리하기

친절한개발초보자 2022. 2. 20. 00:38
728x90
DOM 요소에 함수 직접 연결하기

 

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

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

// img 요소를 가져와 변수에 저장한 후 onclick을 사용해 변수에 이벤트 처리기(함수)를 직접 연결

 

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

 

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

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

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

    function changePic() {
        cup.src = "images/cup-2.png";
    }
</script>

 

DOM의 event 객체 알아보기

 

  • DOM에는 이벤트 정보를 저장하는 event 객체가 있다. 
  • 이 객체에는 웹 문서에서 이벤트가 발생한 요소가 무엇인지, 어떤 이벤트가 발생했는지 등의 정보가 들어 있다.
  • event 객체에는 이벤트 정보만 들어 있다.
  • 만약 이벤트가 발생한 대상에 접근하려면 이벤트 처리기에서 예약어 this를 사용해야 한다.
구분 설명
프로퍼티 altkey 이벤트가 발생할 때 ALT를 눌렀는지 여부를 boolean값으로 반환한다.
button 마우스에서 누른 버튼의 키값을 반환한다.
charCode keypress 이벤트가 발생했을 때 어떤 키를 눌렀는지 유니코드값으로 반환한다.
clientX 이벤트가 발생한 가로 위치를 반환한다.
clientY 이벤트가 발생한 세로 위치를 반환한다.
ctrlKey 이벤트가 발생했을 때 Ctrl를 눌렀는지 여부를 boolean값으로 반환한다.
pageX 현재 문서 기준으로 이벤트가 발생한 가로 위치를 반환한다.
pageY 현재 문서 기준으로 이벤트가 발생한 세로 위치를 반환한다.
screenX 현재 화면 기분으로 이벤트가 발생한 가로 위치를 반환한다.
screenY 현재 화면 기분으로 이벤트가 발생한 세로 위치를 반환한다.
shiftKey 이벤트가 발생할 때 Shift를 눌렀즌지 여부를 boolean값으로 반환한다.
target 이벤트가 최초로 발생한 대상을 반환한다.
timeStamp 이벤트가 발생한 시간을 반환한다.
type 발생한 이벤트 이름을 반환한다.
which 키보드와 관려된 이벤트가 발생할 때 키의 유니코드값을 반환한다.
메서드 preventDefault() 이벤트를 최소할 수 있는 경우에 취소한다.

 

addEventListener() 메서드 사용하기

 

  • addEventListener() 메서드와 event 객체를 사용하면 한 요소에 여러 이벤트 처리기를 연결해 실행할 수 있다.
  • addEventListener() 메서드는 끝에 세미콜론(;)을 꼭 붙여야 한다.
    요소.addEventListener(이벤트, 함수, 캡처 여부);
    
    // 1. 이벤트 : 이벤트 유형을 지정한다. 단, click과 keypress처럼 on을 붙이지 않고 쓴다.
    // 2. 함수 : 이벤트가 발생하면 실행할 명령이나 함수를 지정한다. 여기에서 함수를 정의할 때는
    //           event 객체를 인구로 받는다.
    // 3. 캡처 여부 : 이벤트를 캡처하는지 엽루를 지정하며 기본값은 false이고 true와 false 중에서
    //               선택할 수 있다. true이면 캡처링, false이면 버블링한다는 의미이다. 이벤트 캡처링은
    //               DOM의 부모 노드에서 자식 노드로 전달되는 것이고, 이벤트 버블리은 DOM의 자식 노드에서
    //               부모 노드로 전달되는 것이다.​

 

CSS 속성에 접근하기

 

  • CSS 속성에 접근하려면 해당 스타일이 적용된 HTML 요소 다음에 예약어 style을 쓰고 속성을 적는다.
    document.요소명.style.속성명
    
    // ex) document.getElementById("desc").style.color = "blue";
  • color처럼 한 단어인 속성명은 그대로 사용하면 되지만 background-color, border-radius 처럼 중간에 하이픈(-)이 있는 속성은 backgroundColor나 borderRadius처럼 두 단어를 합쳐서 사용한다.
    (이때 두 번째 단어의 첫 글자는 Color와 Radius처럼 대문자로 표시한다.) 
728x90

'Front-End (웹) > 자바스크립트' 카테고리의 다른 글

DOM에서 노드 추가•삭제하기  (0) 2022.02.20
DOM 요소에 접근하고 속성 가져오기  (0) 2022.02.19
문서 객체 모델(DOM)  (0) 2022.02.18
브라우저와 관련된 객체  (0) 2022.02.18
내장 객체  (0) 2022.02.17
Comments