[JS] 이벤트 (event)

형이·2023년 8월 16일
0

JavaScript

목록 보기
17/20
post-thumbnail

📝 JavaScript

🖥️ 1. event

  • event는 어떤 사건을 의미한다.
  • 브라우저에서의 사건이란 사용자가 클릭을 했을 '때', 스크롤을 했을 '때', 필드의 내용을 바꾸었을 '때'와 같은 것을 의미한다.

1-1. inline

  • 태그에 직접 자바스크립트를 기술하는 방식
  • 태그에 연관된 스크립트가 분명하게 드러나지만 정보로서의 가치가 떨어진다.
EX) 인라인 방식

<body>
    <!-- onclick : 클릭했을 때 -->
    <input type="button" value="Hello World"
        onclick="alert('Hello World')" />
</body>

1-2. 프로퍼티 리스너

  • 프로퍼티 리스너 방식은 이벤트 대상에 해당하는 객체의 프로퍼티로 이벤트를 등록하는 방식이다.
  • 인라인 방식에 비해서 HTML과 Javascript를 분리할 수 있다는 점에서 선호되는 방식이다.
EX)

<body>
    <input type="button" id="target" value="button" />
    <script>
        let t = document.getElementById('target');
        t.onclick = function(event){
            alert("hello world " + event.target.value);
        }
    </script>
</body>

1-3. 이벤트 객체

  • 이벤트가 실행된 맥락의 정보가 필요할 때는 이벤트 객체를 사용한다. 이벤트 객체는 이벤트가 실행될 때 이벤트 핸들러의 인자로 전달된다.

1-4. addEventListener

  • 권장하는 방식
EX1)

<body>
    <input type="button" id="btn" value="button"/>
    <script>
        let t = document.getElementById('target');
        t.addEventListener('click', function(event){
            alert("hello world , " + event.target.id);
        });
    </script>
</body>

EX2)

<body>
    <input type="button" id="btn1" value="btn1"/>
    <input type="button" id="btn2" value="btn2"/>
    <script>
        let t1 = document.getElementById('btn1');
        let t2 = document.getElementById('btn2');
        t1.addEventListener('click', btn_listener);
        t2.addEventListener('click', btn_listener);

        function btn_listener(event){
            // id가 btn1일 때는 alert(1)
            // id가 btn2일 때는 alert(2)
           if( event.target.id == 'btn1' ){
            alert(1);
           } else if ( event.target.id == 'btn2' ){
            alert(2);
           }
        }
    </script>
</body>

1-5. 자기 자신을 참조하는 방법 (this)

EX)

<body>
    <!-- 자기 자신을 참조하는 방법 -->
    <input type="button" id="target" value="button"
        onclick="alert('hello,' +
        		 document.getElementById('target').value);" />

    <!-- this를 통해 간편하게 참조 -->
    <input type="button" value="button2" 
    	   		 onclick="alert('hello,' + this.value);" />
</body>

0개의 댓글