DOM 이벤트 매개변수 - 이벤트 객체

이벤트 핸들러

이벤트 이름 click; load; mouseover ; 이벤트 핸들러는 **'on**'으로 시작하므로 click 이벤트 에 대한 이벤트 핸들러는 onclick 이고 load 이벤트 에 대한 이벤트 핸들러 는 onload 입니다 .

HTML 이벤트 핸들러는 이벤트 핸들러에서 실행할 함수를 직접 추가할 수 있으며 다른 곳에 정의된 스크립트를 호출할 수도 있습니다.

<button oncilck="alert('hello world!')"></button>//执行代码直接添加到事件中
<button onclick='hello()'></button>//调用其他脚本
<script>
    function hello(){
      
      
    	alert('hello,world!')
    }
</script>

이벤트 객체

HTML 이벤트 핸들러는 요소의 속성 값을 캡슐화하는 함수를 생성합니다. 이 함수에는 이벤트 객체인 지역 변수 event가 있습니다.

사용자가 이벤트를 트리거하고 요소가 이벤트 처리 기능을 실행하면 기본적으로 이벤트 객체가 이벤트 처리 기능에 전달되어 이벤트의 상태와 동작을 기록합니다.

<div id="box1">box1</div>
<div id="box2">box2</div>
<div id="box3" onclick="log3(this)">box3</div>
<script>
    document.getElementById("box1").addEventListener("click", function () {
      
      
        console.log(event);//PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0, …}
        console.log(event.target);//<div id="box1">box1</div>
    })

    document.getElementById("box2").onclick = function () {
      
      
        console.log(event);//PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0, …}
        console.log(event.target);//<div id="box2">box2</div>
    }
    
    function log3(self) {
      
      
        console.log(self);//<div id="box3" οnclick="log3(this)">box3</div>
        console.log(event);
        console.log(event.currentTarget);//与console.log(self);输出一致
    }
</script>

html 이벤트 속성을 사용하여 이벤트를 요소에 직접 추가하는 경우(예: 위의 예에서 #box3) 해당 이벤트 함수도 this 매개변수를 수신할 수 있으며 this는 요소 자체를 가리킵니다. event.currentTarget

이벤트 공통 속성 및 메서드

  • 유형 이벤트 유형
  • 대상 이벤트 발신자(이벤트를 트리거한 요소)
  • currentTarget 이벤트 리스너(이벤트가 바인딩된 요소)
    <div class="parent" onclick="clickParent()">
        父元素
        <div class="son">子元素</div>
    </div>
    <script>
        function clickParent() {
            
            
            console.log(event.currentTarget);
            console.log(event.target);
        }
    </script>
    

    부모를 클릭하면 다음과 같이 출력됩니다.

    <div class="parent" onclick="clickParent()">...</div>
    <div class="parent" onclick="clickParent()">...</div>
    

    아들을 클릭하면 다음이 출력됩니다.

    <div class="parent" onclick="clickParent()">...</div>
    <div class="son">子元素</div>
    
  • stopPropagation()은 이벤트 버블링 또는 캡처를 방지합니다.
  • cancelable은 이벤트가 버블링되거나 캡처되는 것을 방지합니다.

  • preventDefault()는 브라우저 기본 동작을 방지합니다.
    <a href="http://www.baidu.com" target="_blank" onclick="handleClick()">百度一下</a>
    <script>
    	function handleClick() {
            
            
            event.preventDefault()//点击 a 元素不会跳转至链接,什么也不会发生
        }
    </script>
    

추천

출처blog.csdn.net/weixin_44001906/article/details/125667865