본문 바로가기

🥸 웹앱개발 이모저모/Java Script

[JS] 이벤트 : 인라인 이벤트, 고전 이벤트 모델

이벤트 용어

  • 이벤트 속성
    • window.onload = function()여기서 onload가 속성
    • 함수는 이렇게 선언했지만 이벤트는 위와 같이 선언하면
    • let s = function(); s();
  • 이벤트 이름, 타입
    • load
  • 이벤트 리스너/핸들러 : 이벤트 속성에 넣는 함수
    • window.onload = function() 여기서 function()임
  • 이벤트 모델
    • 문서 객체에 이벤트를 연결하는 방법 : DOM
      • DOM level 0 : 고전 이벤트 모델임
        • 인라인 이벤트 모델
        • 이벤트를 중복해서 연결할 수 없음
      • DOM level 2 : 표준 이벤트 모델임
        • 마이크로소프트 인터넷 익스플로러 이벤트 모델
        • 이벤트를 중복해서 연결 가능
        • 웹 브라우저 마다 연결하는 방법이 다름

인라인 이벤트 모델

  • 방법 1
    • html 태그 내부에서 이벤트를 연결click 되면 alert를 실행
    • <button onclick="alert('click')">버튼</button>
  • 방법 2
    • 사용자 정의 함수 인라인함수를 구현하고 함수 호출하는 방식
    • <body> <button onclick="btnClick()">버튼</button> <script> function btnClick(){ alert('click'); } </script> </body>

이벤트 속성

  • 마우스 이벤트
    • onmouseover() : 마우스가 지정한 요소 영역에 들어왔을 때
    • onmouseout() : 마우스가 지정한 요소 영역에 있다가 밖으로 갔을 때 발생
    • ondbclick() : 마우스가 지정한 요소를 더블 클릭했을 때
  • 키보드 이벤트
    • onkeydown() : 지정한 요소에서 키보드가 눌렸을 때
    • onkeyup() : 키보드를 눌렀다 뗐을 때
  • 기타 이벤트
    • onblur() : 지정한 요소에 포커스가 다른 요소로 이동되어 잃었을 때 발생 (포커스 반대인듯)
    • onfocus() : 지정한 요소에 포커스가 갔을 때
    • onchange() : 지정한 요소에 value속성 값이 바뀌고 포커스가 이동되었을 때 발생
    • onload() : 지정한 요소의 하위 요소를 모두 로딩했을 때 발생
    • onsubmit() : 폼 요소에 전송 버튼을 눌렀을 때 발생

예제

  • 고전 이벤트 모델
<body>
    <script>
        window.onload = function(){
            let btn = document.getElementById('btn1');
            btn.onclick = function(){
                alert('click');
            }
    };
    </script>

    <button id="btn1">버튼</button>
</body>

버튼을 클릭하면 alert창에 "click"이 뜸

  • 이벤트 this
<body>
    <script>
        window.onload = function(){
            let btn = document.getElementById('btn1');
            btn.onclick = function(){
                this.innerHTML = this.innerHTML + "★";
            }
    };
    </script>

    <button id="btn1">버튼</button>
</body>

버튼을 클릭하면 버튼의 “버튼” 뒤에 ★이 추가됨