js中event事件处理

Posted hjson-前端小院

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>






以上是关于js中event事件处理的主要内容,如果未能解决你的问题,请参考以下文章

events.js:160 抛出 er; // 未处理的“错误”事件

js中event事件处理

HLS.js 获取视频片段信息

节点 events.js:174 throw er; // 未处理的“错误”事件

js经常用到的代码片段

前端程序员的蜕变——JS的 event 对象属性使用实例兼容性处理(极大提高代码效率减少代码量)