7.20

javascript事件基础和事件绑定
一、事件驱动
    1、事件
    javascript侦测到的用户的操作或是页面的一些行为
    2、事件源
    引发事件的元素(发生在谁身上)
    3、事件处理的程序
    对事件处理的程序或是函数(发生什么事)
二、事件分类
    1、鼠标事件
    onclick 鼠标单机时触发此事件;
    ondblclick 鼠标双击时触发此事件;
    onmousedown 按下鼠标时触发此事件;
    onmouseup 鼠标按下后松开鼠标时触发此事件;
    onmousemove 鼠标移动时触发此事件;
    onmouseout 当鼠标离开某对象范围时触发此事件。
    2、键盘事件
    onkeyup 当键盘上某个按键被按下后松开时触发此事件;
    onkeydown 当键盘上某个按键被按下时触发此事件;
    onkeypress 当键盘上某个按键被按下并且释放触发此事件。
    3、表单事件
    onsubmit 一个表单被递交时触发此事件;
    onfoucs 当某个元素获得焦点时触发此事件;
    onchange 当前元素失去焦点并且元素的内容发生改变时触发此事件。
    4、页面事件
    onload 页面加载事件;
    onunload 当前页面将被改变时触发此事件;
    onbeforeunload 当前页面的内容将要被改变时触发此事件。
三、如何绑定事件
    1、在脚本中绑定;
    2、直接在HTML元素绑定。
例:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        window.onload = function() {
            var btn = document.getElementById("btn");
            btn.onclick = fn1;
            addEvent(btn, "onclick", fn2);
            btn.onclick = null;
        };
        //obj: 需要添加事件的对象
        //types: 事件的类型
        //fns: 添加的事件方法
        function addEvent(obj, types, fns) {
            if(obj[types] == null) {
                obj[types] = fns;
            } else {
                var oldFns = obj[types];
                obj[types] = function() {
                    oldFns();
                    fns();
                }
            }
        }
        function fn1() {
            alert('1');
        }

        function fn2() {
            alert('2');
        }
    </script>
</head>
<body>
<input type="button" id="btn" value="点击"/>
</body>
</html>

四、同一个元素绑定多个事件处理程序
    IE:
    对象.attachEvent("事件(on)","处理程序") 添加;
    对象.detachEvent("事件(on)","处理程序") 删除;
    FF:
    对象.addEventListener("事件","处理程序",布尔值) 添加;
    对象.removeEventListener("事件","处理程序",布尔值) 删除;
例:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        window.onload = function() {
            btn.onclick = fn1;
            addEvent_1(btn,"click",fn2);
            addEvent_2(btn,"click",fn2);
        };
        function addEvent_1(obj,types,fns){
            if(document.all){
                obj.attachEvent("on"+ types,fns);
            }else{
                obj.addEventListener(types,fns,false)
            }
        }
        function addEvent_2(a,b,c){
            if(document.all){
                a.detachEvent("on" +b,c)
            }else{
                a.removeEventListener(b,c,false)
            }
        }
        function fn1(){
            alert("1");
        }
        function fn2(){
            alert("2");
        }
    </script>
</head>
<body>
<input type="button" id="btn" value="点击"/>
</body>
</html>

 
原文地址:https://www.cnblogs.com/lastorder/p/4663148.html