• js中event事件处理


    1. HTML事件

     直接添加到HTML结构中

    function show() {
        alert('hello');
    }
    
    <body>
        <button id="btn" onclick="show()">按钮</button>
    </body>
    

    2. DOM0级事件

     把一个函数赋值给一个事件处理程序
        a. 移除事件:event.onclick = null
        b. dom 0级事件只允许绑定一个事件处理函数

    <button id="btn">按钮</button>
    
    var btn = document.getElementById('btn');
    btn.onclick = function() {
        alert('hello');
    }
    
    btn.onclick = function() {
        alert('ok');           //覆盖上面的函数,只会显示"ok"
    }
    

    3. DOM2级事件

     dom2级事件允许给元素绑定多个事件处理函数

    a. 添加事件
    addEventListener("事件名",事件处理函数,"布尔值");
     true:事件捕获
     false:事件冒泡

    b. 移除事件
    removeEventListener("事件名",事件处理函数)

    案例1:DOM2级事件

        btn.addEventListener('click', function() {
            alert('show');
            // arguments.callee 指向当前函数
            btn.removeEventListener('click', arguments.callee); 
        });
    

    案例2: 给同一个事件绑定多个处理函数

    <button id="btn">按钮</button>
    
    var btn = document.getElementById('btn');
    //function()是匿名函数形式
    btn.addEventListener('click', function() {  
        alert('ok');
    });
    function show() {                      
        alert('show');
    }
    //结果"ok","show"--两个事件都会处理,show引用函数名
    btn.addEventListener('click', show); 
    

    案例3:一次性事件

    <button id="btn">按钮</button>
    <script>
        var btn = document.querySelector('#btn');
        function show() {
            alert('show');
            //当执行一次事件后,移除事件
            btn.removeEventListener('click', show); 
        }
        btn.addEventListener("click",show);
    </script>
    

    一次性事件用this和callee方法

    <button id="btn">按钮</button>
    <script>
        var btn = document.querySelector('#btn');
        btn.addEventListener("click",
            function() {
                alert('show');
                //当执行一次事件后,移除事件
                this.removeEventListener('click', arguments.callee); 
            }
        );
    </script>
    

    4. IE事件处理程序(ie8及以下版本)

    a. attachEvent("事件名",事件处理函数)

    b. detachEvent("事件名",事件处理函数)

    事件处理函数兼容处理写法

    function addEvent(elm, type, callback) {
        if (elm.addEventListener) {
            elm.addEventListener(type, callback); //DOM事件
        } else if (elm.attachEvent) {
            elm.attachEvent('on' + type, callback);//ie事件,事件需要带on
        } else {
            elm[on + "type"] = callback;     //HTML事件
        }
    }
    window.onload = function() {
        var btn = document.getElementById('btn');
        addEvent(btn, 'click', function() {       
            alert(123);
        });
    }
    
    html代码:
    <body>
        <button id="btn">按钮</button>
    </body>
    
  • 相关阅读:
    如何在IDEA中查看Gradle项目的所有依赖关系
    YUYV&YV12&mtk6763
    MTK-shot mode
    Thread中,join()方法
    高通平台常用缩写
    Android.mk用法详解
    HAL层编写规范
    MMU
    Linux设备驱动中断机制
    阻塞和非阻塞I/O
  • 原文地址:https://www.cnblogs.com/hjson/p/10291507.html
Copyright © 2020-2023  润新知