zoukankan      html  css  js  c++  java
  • 第四天:事件对象(常用的两个属性和两个方法)

    由于放假,信息没能及时更新,抱歉

    学习内容:

    事件对象:

    在触发DOM事件的时候,都会产生一个对象

    事件的常见属性

    type :获取事件类型

    target: 获取事件目标

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>事件对象</title>
    </head>
    <body>
    <button id="btn" onclick="">按钮</button>
    </body>
    <script>
    document.getElementById("btn").addEventListener("click",showType);
    function showType(event){
    // alert(event.type); 获取事件的类型 “click”,如果修改成mouseover也可以
    alert(event.target); 获取事件的目标
    }

    </script>
    </html>

    补充说明:
    获取事件类型时,弹出对话框,对话框显示内容为click
    获取事件目标时,点击按钮,弹出框如下:

    事件的常见方法

    stopPropagation():阻止事件冒泡

    preventDefault() :阻止事件默认行为

    举例说明什么是事件冒泡

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>事件对象</title>
    </head>
    <body>
    <div id="div">
    <button id="btn" onclick="">按钮</button>
    </div>
    </body>
    <script>
    document.getElementById("btn").addEventListener("click",showType);
    document.getElementById("div").addEventListener("click",showDiv);
    function showType(event){

    alert(event.target);
    }
    function showDiv(event){
    alert("div");
    }
    </script>
    </html>

    运行结果:

    点击按钮,弹出了对话框,返回事件目标,关闭对话框后,再次弹出对话框内容为“div”

    虽然只是点击了按钮,但是事件向上传递,因为button属于div中,这就是事件的冒泡,如何阻止事件的冒泡,就增加如下一条代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>事件对象</title>
    </head>
    <body>
    <div id="div">
    <button id="btn" onclick="">按钮</button>
    </div>
    </body>
    <script>
    document.getElementById("btn").addEventListener("click",showType);
    document.getElementById("div").addEventListener("click",showDiv);
    function showType(event){

    alert(event.target);
    event.stopPropagation(); //阻止事件冒泡
    }
    function showDiv(event){
    alert("div");
    }
    </script>
    </html>

    阻止事件的冒泡,则第一个框弹出后,不会弹出showdiv这个函数的内容


    阻止事件的默认行为

      什么是事件的默认行为,例如我们添加一个连接,连接文字“百度”就会默认跳转到百度页

    例如:<a href="http://www.baidu.com" >百度</a>

      代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>事件对象</title>
    </head>
    <body>
    <div id="div">
    <button id="btn" onclick="">按钮</button>
    <a href="http://www.baidu.com" id="aid">百度</a>
    </div>
    </body>
    <script>
    document.getElementById("btn").addEventListener("click",showType);
    document.getElementById("div").addEventListener("click",showDiv);
    document.getElementById("aid").addEventListener("click",showA);
    function showType(event){
    alert(event.target);
    event.stopPropagation();
    }
    function showDiv(event){
    alert("div");
    }
    function showA(event){
    event.stopPropagation(); // 阻止了冒泡行为,不然先跳出div
    event.preventDefault(); //阻止了默认行为,打开百度
    }
    </script>
    </html>

      

    
    
  • 相关阅读:
    java中volatile关键字的含义
    2019年个人总结
    跟随Javac代码来解答字节码的疑惑
    Python装饰器实现带参数和不带参数
    try with resource当中你没有注意到点。。
    IDEA中,已经被加到版本库的文件如何在提交的时候忽略它们
    连接mysql客户端报错: java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'
    从字节码层次看i++和++i
    对lambda表达式的字节码实现个人理解
    解决mvn clean install的报错The packaging for this project did not assign a file to the build artifact
  • 原文地址:https://www.cnblogs.com/fenr9/p/5594280.html
Copyright © 2011-2022 走看看