• JavaScript---事件详解


    事件流

    描述的是在页面中接受事物的顺序

    接收事物的顺序

    • 事件冒泡

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

    • 事件捕获

      最不具体的节点接收事件,而最集体的节点应该是最后接收事件

    事件处理

    HTML事件处理

    直接添加到HTML结构中

    <button id="btn1" onclick="demo()">按钮</button>
    <script>
        function demo(){
            alert("Hello");
        }
    </script>

    这种处理方式,存在修改函数名,需要到html中修改事件调用的函数名的问题

    DOM0级事件处理

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

    解决了HTML事件处理的问题

    <button id="btn1">按钮</button>
    <script>
        var btn1=document.getElementById(btn1);
        btn1.onclick=function(){
            alert("Hello");
        };//这样写的话,前面的事件会被覆盖
        btn1.onclick=function(){
            alert("Hello2");
        };
        //清除事件
        btn1.onclick=null;
    </script>

    仍然存在问题,当有多个事件时,前面的事件会被覆盖,只执行最后一个事件处理

    DOM2级事件处理

    • addEventListener("事件名", "事件处理函数", "布尔值");

        true:事件捕获

        false:事件冒泡

    • removeEventListener();
    <div id="divid">
        <button id="btn1">按钮</button>
    </div>
    //这样写就不会覆盖前面的事件
    <script>
        var btn1 = document.getElementById(btn1)
        btn1.addEventListener("click", function(){
            alert("Hello")
        });
        btn1.addEventListener("click", function(){
            alert("Hello2")
        });
    </script>

    存在IE8及以下版本不支持该事件处理方法

    IE事件处理程序

    • attachEvent
    • detachEvent

    一个支持各浏览器的的事件处理demo

    <button id="btn1">按钮</button>
    <script>
        var btn1 = document.getElementById("btn1");
        if (btn1.addEventListener){
            btn1.addEventListener("click", demo);
        } else if (btn1.attachEvent){
            btn1.attachEvent("onclick", demo);
        } else {
            btn1.onclick = demo();
        }
        function demo() {
            alert("Hello");
        }
    </script>
  • 相关阅读:
    iOS开发UI篇—控制器的View的创建
    iOS开发UI篇—控制器的创建
    iOS开发UI篇—UIWindow简单介绍
    iOS开发UI篇—导航控制器属性和基本使用
    按照官网的升级完socket.io报错Manager is being released。
    npm和yarn的区别,我们该如何选择?
    iOS性能优化-数组、字典便利时间复杂
    OC CollectionView和TableView自身高度的隐式递归计算,改变父试图布局
    阿里系手淘weex学习第一天
    iOS邓白氏编码申请流程及苹果账号组织名称变更
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/8414048.html
Copyright © 2020-2023  润新知