【Web APIS】07-事件高级

注册事件(绑定事件)

注册事件概述

  • 给元素添加事件,称为注册事件或者绑定事件
  • 注册事件有两种方式∶传统方式方法监听注册方式
    在这里插入图片描述

addEventListener 事件监听方式

在这里插入图片描述

  • addEventListener里面的事件类型是字符串, 必定加引号,而且不必带on
  • 同一个子元素,同一个事件可以添加多个侦听器(事件处理程序)
  • 用法示例:
<body>
    <button>传统注册事件</button>
    <button>方法监听注册事件</button>
    <script>
        var btns = document.querySelectorAll('button');
        // 1.传统注册事件
        btns[0].onclick = function(){
            alert('上山打老虎');
        }
        btns[0].onclick = function(){
            alert('白日依山尽');
        }//百日依山尽 传统注册事件只能绑定一个

        // 2.事件侦听注册事件 
        // (1)addEventListener里面的事件类型是字符串 必定加引号,而且不必带on
        // (2)同一个子元素,同一个事件可以添加多个侦听器(事件处理程序)
        btns[1].addEventListener('click', function(){
            alert('3333');
        })
        btns[1].addEventListener('click', function(){
            alert('444');
        })
        btns[1].addEventListener('click', function(){
            alert('5555');
        })
    </script>
</body>

删除事件(解绑事件)

  1. 传统注册方式

eventTarget.onclick =null;

  1. 方法监听注册方式

eventTarget.removeEventListener(type,listener [, useCapture] );

  • 用法示例:

需求:点击div弹出2022,但点击一次后就不再弹出;所以此时需要解绑事件

在这里插入图片描述
示例代码:

<style>
        div{
            width: 100px;
            height: 100px;
            background-color: #bfa;
        }
    </style>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        var divs = document.querySelectorAll('div');
        divs[0].onclick = function(){
            alert('2022');
            // 1.传统方式删除事件
            divs[0].onclick = null;//点击一次就解除绑定
        }
            // 2.removeEventLister
        divs[1].addEventListener('click', fn)//里面的fn不需要调用加小括号

        function fn(){
            alert('333');
            divs[1].removeEventListener('click', fn)
        }
    </script>
</body>

DOM事件流(重点)

DOM事件流概念

  • 事件流描述的是从页面中接收事件的顺序。
  • 事件发生时会在元素节点之间按照特定顺序传播,这个传播过程DOM事件流
    在这里插入图片描述
  • 事件流理解举例:
    在这里插入图片描述

DOM事件流代码验证

  1. JS 代码中只能执行捕获或者冒泡其中的一个阶段。
  2. onclick只能得到冒泡阶段。
  3. addEventListener(type,listener[,useCapture])第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false(不写默认就是false ),表示在事件冒泡阶段调用事仲处理程序
  4. 实际开发中我们很少使用事件捕获,我们更关注事件冒泡
  5. 有些事件是没有冒泡的,比如onblur、 onfocus、onmouseenter、onmouseleave。
    在这里插入图片描述

(1)捕获阶段document->html->body-> father->son

此时点击son弹出:则先弹出document,再father,最后son

   <style>
        .father{
            position: relative;
            width: 400px;
            height: 400px;
            background-color: purple;
            margin: 200px auto;
        }
        .son{
            position: absolute;
            top: 50%;
            left: 50%;
            width: 250px;
            height: 250px;
            background-color: #bfa;
            margin-top: -125px;
            margin-left: -125px;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son">son</div>
    </div>
    <script>
        // 捕获阶段:如果addEventListener第三个参数是true,则此时处于捕获阶段阶段
            document->html->body-> father->son
        var son = document.querySelector('.son');
        son.addEventListener('click', function(){
            alert('son');
        },true);//son;只给son绑定事件 所以打印son

        var father = document.querySelector('.father');
        father.addEventListener('click', function(){
            alert('father');
        },true);//father son;当给father也绑定事件后,再点击son盒子则先弹出father再弹出son

       
        document.addEventListener('click', function(){
            alert('document');
        },true);//document father son;最后给document也绑定事件后,则先弹出document,再father,最后son


    </script>
</body>

(2)冒泡阶段son->father->body->html-> document

此时点击son弹出:则先弹出son再father,最后document

   <style>
        .father{
            position: relative;
            width: 400px;
            height: 400px;
            background-color: purple;
            margin: 200px auto;
        }
        .son{
            position: absolute;
            top: 50%;
            left: 50%;
            width: 250px;
            height: 250px;
            background-color: #bfa;
            margin-top: -125px;
            margin-left: -125px;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son">son</div>
    </div>
    <script>
        var son = document.querySelector('.son');
        son.addEventListener('click', function(){
            alert('son');
        },false);//

        var father = document.querySelector('.father');
        father.addEventListener('click', function(){
            alert('father');
        },false);

       
        document.addEventListener('click', function(){
            alert('document');
        });//son father document;只点击son盒子,仍然会弹出father,document,因为事件有冒泡的过程


    </script>
</body>

事件对象

什么是事件对象

在这里插入图片描述

事件对象的常见属性和方法

在这里插入图片描述

e.target和this的区别

  • e.target返回的是触发事件对象(元素)
  • this返回的是绑定事件对象(元素)

代码示例:
-我们给ul绑定点击事件,因为事件处于冒泡阶段:点击li也会触发事件,此时e.target返回li,this则返回ul


 <style>
        ul{
            width: 300px;
            height: 300px;
            background-color: #bfa;
        }
        ul li{
            background-color: pink;
        }
    </style>
</head>
<body>
   <ul>
    <li>123</li>
   </ul>
    <script>
        var ul = document.querySelector('ul');
        ul.addEventListener('click',function(e){
            console.log(e.target);//li
            console.log(this);//ul
        })
    </script>
</body>

阻止默认行为

  1. 利用事件对象里的e.preventDefault()方法;两种注册方式都可
  2. e.returnValue;//兼容ie6~8,ie已弃用不考虑此法
  3. return false:没有兼容性问题,但只限于传统的注册方法,且return后面的代码不执行

-总结:return false只能用于传统注册方式阻止行为,且有弊端;e.preventDfault都可用,它是方法要加()

代码示例:

<body>
    <div>
    <a href="https://www.baidu.com/">百度</a>    
    </div>
    <script>
        var a = document.querySelector('a');
        // 阻止事件行为,比如让链接不跳转,按钮不提交
        a.addEventListener('click', function(e){
            // preventDefault()方法
            e.preventDefault();//标准写法
    </script>

阻止事件冒泡(重点)

  • 事件冒泡∶开始时由最具体的元素接收,然后逐级向上传播到到DOM最顶层节点
  • 事件冒泡本身的特性,会带来的坏处,也会带来的好处,需要我们灵活掌握,所以存在阻止事件冒泡这个需求

利用事件对象里面的stopPropagation ()方法

e.stopPropagation();

用法示例:

 <script>
        // 常见事件对象的属性和方法
        // 阻止冒泡 stopPropagation()
        var son = document.querySelector('.son');
        son.addEventListener('click', function(e){
            alert('son');
            e.stopPropagation();//阻止事件冒泡
        },false);//

        var father = document.querySelector('.father');
        father.addEventListener('click', function(){
            alert('father');
        },false);

       
        document.addEventListener('click', function(){
            alert('document');
        });
    </script>

事件委托

  • 事件委托:事件委托也称为事件代理,在jQuery里面称为事件委派。
  • 事件委托原理(面试点):不给每个子节点单独设置事件监听器,而是将事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点
  • 事件委托的作用:如下例:只操作了一次DOM,提高了程序的性能

用法示例::给ul注册点击事件,然后利用事件对象的target来找到当前点击的li,因为点击li,ul有注册事件,就会触发事件监听器。

<body>
    <ul>
        <li>飞流直下三千尺</li>
        <li>飞流直下三千尺</li>
        <li>飞流直下三千尺</li>
        <li>飞流直下三千尺</li>
    </ul>
    <Script>
        // 事件委托 原理:给父节点添加侦听器,利用事件冒泡影响每一个子节点
        var ul = document.querySelector('ul');
        ul.addEventListener('click', function(e){
            // alert('飞流直下三千尺');
            // e.target这个可以得到我们点击的对象   
            e.target.style.backgroundColor = 'pink';
        })
    </Script>
</body>

常用的鼠标事件

  1. contextmenu 我们可以禁止鼠标右键菜单
  2. selectstart 禁止选中文字

用法示例:

<body>
        我是一段不愿意分享的文字
    <script>
        // 1.contextmenu  我们可以禁止鼠标右键菜单
        document.addEventListener('contextmenu', function(e){
                e.preventDefault();
        })
        // 2.selectstart 禁止选中文字
        document.addEventListener('selectstart', function(e){
            e.preventDefault();
        })
    </script>
</body>

鼠标事件对象

event对象代表事件的状态,跟事件相关的一系列信息的集合。现阶段我们主要是用鼠标事件对象MouseEvent和键盘事件对象KeyboardEvent
在这里插入图片描述
用法示例:

 <script>
        // 鼠标事件对象 MouseEvent
        document.addEventListener('click', function(e){
            // 1.client返回鼠标在可视区域的x和y坐标
                console.log(e.clientX);
                console.log(e.clientY);
                console.log('---------------');

            // 2.page鼠标在页面文档的x和y坐标(常用)
                console.log(e.pageX);
                console.log(e.pageY);

            //3.screen 鼠标在电脑屏幕的x和y坐标
                console.log(e.screenX);
                console.log(e.screenY);
        })

    </script>

案例:移动的旺仔

案例需求:旺仔gif跟随鼠标移动
在这里插入图片描述
案例代码:

<style>
        img{
            width: 100px;
            position: absolute;
        }
    </style>
</head>
<body>
    
        <img src="../../images/mouse.gif" alt="">
        <script>
            var img = document.querySelector('img');
            document.addEventListener('mousemove', function(e){
                var X = e.pageX;
                var Y = e.pageY;
                img.style.top =  Y - 50 +'px';
                img.style.left = X - 50 +'px';
                console.log(1);
            })
        </script>
  

常用的键盘事件

在这里插入图片描述
用法示例:

<script>
        // 常用的键盘事件
        // 1.keyup按键弹起的时候触发
        // document.onkeyup = function(){
        //     alert('我弹起了');
        // }
        document.addEventListener('keyup', function(){
            console.log('我弹起了');
        })
        // 2.keydown 按键按下的时候触发
        document.addEventListener('keydown', function(){
            console.log('我被摁下去了');
        })
        // 3.keypress 按键按下的时候触发:不能识别功能键,比如ctrl,shift,左右箭头
        document.addEventListener('keypress', function(){
            console.log('我按下了press');
        })
        // 4.三个事件执行顺序: keydown - keypress - keyup
    </script>

key判断用户按下哪个键

 <script>
        // 键盘事件对象中的keyCode属性可以得到相应键的ASCII码值
        //已废弃: 该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它。
        document.addEventListener('keyup', function(e){
            console.log(e.keyCode);
            console.log(e.key);//返回用户按下的物理按键的值
        })
    </script>

案例:模拟京东按键输入内容

案例需求:按下s键,鼠标自动跳转至搜索框
案例代码:

<body>
    <input type="text">
    <Script>
        // 当用户按下s键,光标就定位到搜索框
        var search = document.querySelector('input');
        document.addEventListener('keyup', function(e){
            if(e.key === 's' || e.key === 'S'){
                search.focus();
            }
        })
    </Script>
</body>

模拟京东物流单号查询

案例需求:在文本框中输入内容时,文本框上面自动显示大号的内容
在这里插入图片描述
案例代码:

 <style>
        .search{
            width: 200px;
            margin: 150px;
            position: relative;
        }
        .con{
            position: absolute;
            display: none;
            top: -20px;
            left: 0;
            width: 190px;
            height: 20px;
            line-height: 20px;
            font-size: 18px;
            border: 1px solid rgba(0, 0, 0, .2);
            color: #333;
        }
    </style>
</head>
<body>
    <div class="search">
        <div class="con"></div>
        <input type="text" placeholder="请输入你的快递单号">
    </div>
    <script>
        // 获取元素
        var input = document.querySelector('input');
        var con = document.querySelector('.con');
        // 注册事件 输入内容则盒子显示
        input.addEventListener('keyup', function(){
            if(this.value !== ''){
            con.style.display = 'block';
            con.innerText = this.value;
        }else{
            con.style.display = '';
        }
        })
        // 失去焦点时,盒子隐藏
        input.addEventListener('blur', function(){
            con.style.display = 'none';
        })
         // 获得焦点时,显示盒子
         input.addEventListener('focus', function(){
            if(this.value !== ''){
                con.style.display = 'block'; 
            }
        })
       
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: APIs IQ-FMEA软件使用手册是一个详细的说明文档,它向用户介绍了使用APIs IQ-FMEA软件的必要步骤和注意事项。 该手册包含了软件的安装、启动和配置过程的详细说明,同时详细介绍了软件的功能和操作界面。用户可以根据手册的指导,逐步了解软件的各项功能和操作方法,并能够快速地使用它来进行FMEA分析。 手册的主要内容包括:软件的基本界面和菜单栏介绍,FMEA分析的基本概念和步骤,创建FMEA项目的方法和注意事项,如何输入和管理FMEA数据,对FMEA数据进行分析和评估的方法,以及如何导出和分享FMEA分析结果等。 除此之外,手册还包括了一些常见问题的解答和故障排除方法,以便用户在使用软件时遇到问题时能够进行及时的解决和应对。 总之,APIs IQ-FMEA软件使用手册全面、系统地介绍了该软件的使用方法和注意事项,对于使用该软件进行FMEA分析的用户来说,具有非常重要的参考价值。 ### 回答2: APIs IQ-FMEA是一款风险分析软件,主要用于产品设计、生产和维护过程中的风险分析。软件使用手册主要介绍了APIs IQ-FMEA软件的安装、如何建立FMEA档案,如何填写FMEA,并对分析结果进行解释。 首先,用户需要正确安装APIs IQ-FMEA软件,并按照软件提供的流程和步骤建立FMEA档案。在建立FMEA档案之前,用户需要了解所分析的系统和产品的全貌,明确其特点、功能、原理和性能指标。FMEA档案建立好之后,用户需要按照FMEA表格的要求填写相应内容,包括零部件名称、功能要求、失效模式、失效后果、失效严重性等内容。针对各项分析指标,用户需要逐一填写,确保准确、完整。 在填写FMEA过程中,需要注意一些问题。例如,失效模式应尽可能地详尽和准确地描述,失效后果应根据实际情况分析,而非猜疑和臆测,失效严重性的分类与分值应根据相关标准和经验进行判定。此外,一定要对不确定的分析指标进行标识,确保再次分析和修正。 分析结束之后,用户可以根据得出的FMEA结果进行分析和解释。软件提供了多种图表和统计分析方法,可以帮助用户快速了解和评估分析结果。用户可以根据得到的结果进行相应的改进和优化,确保产品和系统的质量和可靠性。 总之,APIs IQ-FMEA是一款非常实用的风险分析软件,使用手册详细介绍了软件的使用流程和技巧,能够帮助用户更准确地进行风险分析和评估。在正式使用前,用户需要认真阅读和理解使用手册,并进行充分的培训和实践,以确保软件能够发挥最大的效益。 ### 回答3: APIs IQ-FMEA软件使用手册(中文)是一本非常重要的参考书籍,用于帮助用户了解如何使用该软件生成FMEA报告。该软件旨在帮助用户减少或消除产品或过程中可能出现的故障或缺陷,从而提高质量和可靠性,降低成本。 该软件使用手册涵盖了软件的全部功能。这包括创建FMEA的工作流程,FMEA的输出和分析,以及生成和管理FMEA报告的功能。在阅读完该手册后,用户将具备以下技能: 1. 使用软件创建FMEA:用户将学会如何使用该软件的各种功能来创建FMEA。这包括建立控制计划、识别可能失效模式、评估失效影响以及制定纠正措施等。 2. 分析FMEA的输出数据:用户将学会如何使用APIs IQ-FMEA软件的输出数据来评估失效模式、失效影响和措施效果。用户将了解如何使用该软件提供的分析工具来识别优先处理的故障模式、降低潜在风险并提高生产效率。 3. 生成和管理FMEA报告:用户将学会如何使用该软件生成FMEA报告并管理相关的文件。该手册提供了有关如何使用自定义模板和生成多种报告格式,包括Word、Excel、PDF等的详细指南,以及如何管理版本控制和FMEA报告的权限等。 总之,APIs IQ-FMEA软件使用手册(中文)是一本很有价值的参考书籍。它将帮助用户掌握该软件并创建高质量的FMEA报告,从而提高产品或过程的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值