JS—事件

事件流:描述的是在页面接受事件的顺序

&事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)

&事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件

***********************

HTML事件处理:
  直接添加到HTML结构中

    <button id="btn" onclick="demo()">按钮</button>
    <script>
        function demo() {//函数名一旦改变,则需要改动两处
            alert("html事件处理");
        }
    </script>

DOM0级事件处理
  把一个函数赋值给一个事件处理程序属性

    <button id="btn">按钮</button>
    <script>
        var btn = document.getElementById("btn");
        btn.onclick = function() {
            alert("DOM0级事件处理");
        }
        btn.onclick = function() {
            alert("原事件被覆盖了!!");
            //DOM0级事件处理的缺点:存在多个事件,则最后一个事件会覆盖之前的事件
        }
        //btn.onclick=null;//清除事件
    </script>

DOM2级事件处理:
  addEventListener("事件名",“事件处理函数”,"布尔值");
  true:事件捕获
  false:事件冒泡
  removeEventListener();

    <button id="btn">按钮</button>
    <script>
        /* document.getElementById("btn").addEventListener("click", function() {
            alert("DOM2级事件处理程序");
        });
        document.getElementById("btn").addEventListener("click", demo);
        function demo() {
            alert("DOM2级事件处理程序");
        } */
        document.getElementById("btn").addEventListener("click", demo);
        function demo() {
            alert("DOM2级事件处理程序");
        }
        document.getElementById("btn").addEventListener("click", demo1);
        function demo1() {
            alert("DOM2级事件处理程序1");//优点:事件不会被覆盖~
        }    
    </script>

@@@一个小的恶作剧:

    <button id="btn">按钮</button>
    <script>
        document.getElementById("btn").addEventListener("click", demo);
        function demo() {
            for ( var i = 0; i < 10000; i++) {
                alert("DOM2级事件处理程序");
            }
        }
    </script>

IE事件处理程序:
  attachEvent【相当于addEventListener】
  detachEvent【相当于removeEventListener】

兼容性处理有关:

 

    <button id="btn">按钮</button>
    <script>
        var btn = document.getElementById("btn");
        if (btn.addEventListener) {
            btn.addEventListener("click", demo);
        } else if (btn.attachEvent) {
            btn.attachEvent("onclick", demo);
        } else {
            btn.onclick = demo();
        }
        function demo() {
            alert("hello");
        }
    </script>

 

posted @ 2016-04-30 22:41  绯乐  阅读(156)  评论(0编辑  收藏  举报