Published 2022. 12. 21. 16:52

이벤트 모델 종류

고전이벤트 모델(기본 이벤트 모델)

: 특정 요소 객체를 가지고와서 해당 요소의 이벤트 속성에 접근한 후 이벤트 핸들러를 연결하는 방식
   이벤트 제거시에는 null 대입 

   <button id="btn1">실행확인</button>
   <button id="btn2">실행확인</button>

   <div id="area1" class="area"></div>
   
   <script>
        const divEl = document.getElementById("area1");
       
        document.getElementById("btn1").onclick = function(){
            divEl.innerHTML += "btn1이 클릭되었습니다.<br>";
        };

        document.getElementById("btn2").onclick= function(){
            divEl.innerHTML += "btn2가 클릭되면서 btn1이벤트 제거됨<br>";
            document.getElementById("btn1").onclick = null; 
        }

   </script>

 

인라인 이벤트모델

 : 요소 내부에 직접적으로 이벤트 속성 제시해서 실행할 내용을 정의하는 방식

<button onclick="document.getElementById('area2').innerHTML+='첫번째 버튼 클릭<br>'">실행확인</button>
   <button onclick="test1();">실행확인</button>
   <div id="area2" class="area"></div>

   <script>
        function test1(){
            document.getElementById("area2").innerHTML += "두번째 버튼 클릭<br>"
        }
   </script>

 

표준 이벤트모델 (addEventListener)

: w3c에서 공식적으로 지정한 이벤트 모델 . IE는 9버전부터 지원
  이벤트 제거시에는 null 대입 

 이벤트 걸고자하는 요소객체.addEventListener("이벤트명",이벤트핸들러);

<button id="btn3">실행확인</button>

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

      btn3.addEventListener("click",function(){
        alert("표준이벤트 모델 테스트");
      });

      //mouseenter : 마우스 갖다대면 발생하는 이벤트 -> 마우스 빠져나가도 그대로 유지 
      btn3.addEventListener("mouseenter",function(){ 
        btn3.style.backgroundColor = "red";
      })

      //mouseout : 마우스 빠져나갔을때 이벤트 
      btn3.addEventListener("mouseout",function(){
        btn3.style.backgroundColor = null;
      })

   </script>

 📌이벤트가 발생한 해당요소객체에 접근하는 방법 

 

고전이벤트 방식

:이벤트 발생 객체는 핸들러 내부에서 this로 표현, 매개변수로 이벤트 정보 전달( e, window.event)

document.getElementById("btn4").onclick = function(e){ //이벤트핸들러
 console.log(e); // 현재 발생된 이벤트에 대한 정보가 담겨있는 Event객체 
 console.log(window.event); //Event객체 
//현재 이벤트가 발생한 요소객체에 접근하고자한다면 --->> e.target/ window.event.target / this
    console.log(e.target);
    console.log(window.event.target);
    console.log(this);

    e.target.innerHTML = "버튼클릭됨";
    window.event.target.style.backgroundColor = "gold";
    this.style.color="white"
     }

 

표준이벤트 방식 

:이벤트 발생 객체는 핸들러 내부에서 this로 표현, 매개변수로 이벤트 정보 전달( e, window.event)

document.getElementById("btn5").addEventListener("click",function(e){ //이벤트핸들러
        console.log(e.target);
        console.log(window.event.target);
        console.log(this);

        })

 

인라인이벤트방식

: window.event.target 으로만 접근가능 

  function test2(e){
        //console.log(e); //undefined (==초기화가 안됨 == 값이 대입되어있지않음 )
        //console.log(e.target);
        //console.log(this); //선언적함수에서의 this는 window객체를 가리킴

        console.log(window.event.target);
     }

 

  <button onclick="test3(this);">인라인이벤트방식2</button>
  <script>
     function test3(el){
         console.log(el);
     }
  </script>

>  onclick= "함수명(this)" 로 객체를 전달한 값을 받아사용할 수도 있음 


키보드 관련 이벤트

- keydown | keypress :  키가 눌려질때 발생하는 이벤트

> keydown : 키보드의 모든 키가 눌려질때 발생됨
> keypress : 키보드의 펑션키, 기능키, 한글 제외한 나머지 키가 눌려질때 발생됨

- keyup : 키가 떼어지는 순간 발생하는 이벤트 

이름 : <input type="text" id="userName" >

<script>
    document.getElementById("userName").onkeyup= function(e){
       // console.log("이벤트발생");

      //console.log(e)
      //console.log(e.key); //현재 누른키
      //console.log(e.keyCode); //현재 누른키의 코드

      console.log(this.value); 
    }
</script>
이름 :

태그별 기본적으로 가지고 있는 이벤트 제거 

: 기본적으로 이벤트 핸들러를 가지고 있는 요소 

- a 태그 : 클릭시 href에 쓰여있는 url로 요청하는 기본이벤트 보유 
- form 내의 submit 버튼 : 클릭시 사용자가 입력한 값들을 action에 제시된 url로 제출하면서 요청하는 기본이벤트 보유 

태그 내에 기본적으로 설정되어있는 이벤트가 실행 안되게끔 막고싶을 경우 
=> 이벤트 핸들러의 return값을 false로 

<a href="http://www.naver.com" onclick="alert('속았지?ㅋ'); return false">네이버로 이동</a>

> 기본이벤트가 있는 요소에 다시 이벤트 속성을 부여하면 입력한 이벤트 코드가 먼저 실행됨 

네이버로 이동

- 메소드 호출방식 

<a href="http://www.google.com" onclick="return test4();">구글로이동</a>
<script> 
  function test4(){ 
      if(confirm("페이지 이동하시겠습니까?")){
        return true;
      }else{
        return false;
      }
  }

</script>

 > 선언적 함수는 return 하는 순간 호출했던 곳으로 돌아가고, 돌려받은 함수를 다시 return하게끔 return 함수명()으로 입력해줘야 함 

구글로이동

 

'Front > JavaScript' 카테고리의 다른 글

JavaScript 11. 정규표현식  (0) 2022.12.22
JavaScript 09. Window 객체  (0) 2022.12.21
JavaScript 08. 객체_ 2  (0) 2022.12.20
JavaScript 08. 객체_ 1  (0) 2022.12.20
JavaScript 07. 함수  (0) 2022.12.19
복사했습니다!