事件(响应用户的操作)

news/2024/7/4 8:29:54
每个事件处理函数,都可以接收一个event对象作为参数,这个对象里面包含这次用户操作的丰富信息。
<button οnclick="buttonClickHandler(event)">点我试试</button> 
<script> 
  function buttonClickHandler(event) {
    console.log(event);
  }
</script>
当我们点击按钮的时候,查看浏览器的开发者工具中的信息,就能看到这个event对象的详细内容被打印了出来,如下图所示:

这是个MouseEvent类型的对象,代表这是由鼠标产生的事件,它包含了这个事件的类型(type),产生的源头DOM元素(target),

事件发生的位置信息(如clientX, clientY)等等重要信息。不同的输入设备,可能会产生不同的事件(如键盘操作,会产生KeyboardEvent事件)。

不同类型的输入设备产生的事件,携带着不太一样的信息,进入事件处理函数,为我们下一步的处理提供了条件。
为了加深印象,我们立马来试一下键盘事件,在一个输入框input标签上,使用onkeypress监听键盘按下的事件:
<input type="text" οnkeypress="keypressHandler(event)"> 
<script> 
  function keypressHandler(event) {
    console.log(event.key + '|' + event.keyCode);
  }
</script

 

 

随着在输入框里的输入,可以看到我们在键盘上按下的键的内容以及键的标识代码被一一打印了出来。
这些例子看下来,是不是觉得获取用户的操作挺简单的?确实很简单。
那HTML的标签元素那么多,哪些上面可以用事件监听呢?答案是所有元素。只是有些事件是通用的,有些事件是某些特定元素上才有的,具体用到的时候,去网上查一下手册就行了。   

通过JS代码添加事件监听

接下来,要给大家介绍另一种为HTML元素添加事件监听的方式。这种方式就是通过JS调用HTML DOM的API,来进行事件处理函数的添加、删除。
同样,我们来改造一下上面按钮的那个例子:
<button id="mybtn">点我试试</button>

<script>
    function buttonClickHandler(event) {
        console.log("Hello");
    }
    // 获取button元素
    var mybtn = document.getElementById('mybtn');
    // 为button添加click监听处理器
    mybtn.addEventListener('click', buttonClickHandler);
</script>
可以看到,我们通过调用这个按钮DOM的API addEventListener,同样可以为它添加事件处理函数。而且,这种方式可以很方便的为元素添加多个不同的事件处理函数:
<button id="mybtn">点我试试</button>
<script>
    function buttonClickHandler1(event) {
        console.log("Hello");
    }

    function buttonClickHandler2(event) {
        console.log("World");
    }

    var mybtn = document.getElementById('mybtn');

    mybtn.addEventListener('click', buttonClickHandler1);
    mybtn.addEventListener('click', buttonClickHandler2);
</script>
添加的多个事件处理函数在click事件触发的时候,都会被执行。
当一些事件处理函数不再需要的时候,我们也可以方便的移除它们:
<button id="mybtn">点我试试</button>

<script>
    function buttonClickHandler1(event) {
        console.log("Hello");
    }

    function buttonClickHandler2(event) {
        console.log("World");
    }

    var mybtn = document.getElementById('mybtn');

    mybtn.addEventListener('click', buttonClickHandler1);
    mybtn.addEventListener('click', buttonClickHandler2);

    // 5秒后移除事件处理函数buttonClickHandler2
    setTimeout(function () {
        mybtn.removeEventListener('click', buttonClickHandler2)
    }, 5000)
</script>
这个例子中,如果前5秒钟内点击按钮的话,总会打印出Hello和World;而超过5秒后再点击按钮的话,则只会打印出Hello了。
怎么样?是不是这种方式看起来很强大?而且,这样的做法可以使得HTML代码和JS代码分离,两个部分干干净净的不再搅和在一起,各司其职,便于维护。

 

转载于:https://www.cnblogs.com/Model-Zachary/p/9150115.html


http://www.niftyadmin.cn/n/1895020.html

相关文章

冒泡排序法_冒泡排序算法

在日常开发中经常会遇到一类问题&#xff0c;就是对一个集合的数据进行排序掌握一些排序算法&#xff0c;对于日常开发是非常有帮助的今天介绍一下冒泡排序法算法逻辑时间复杂度由上图逻辑可以得出&#xff0c;冒泡排序的循环次数为由循环次数可以得出&#xff0c;冒泡排序的时…

辗除法求最大公约数_用欧几里得算法求最大公约数

12 和 18 的最大公约数是多少&#xff1f;最大公约数&#xff1a;最大公约数&#xff0c;也称最大公因数、最大公因子&#xff0c;指两个或多个整数共有约数中最大的一个。例如&#xff1a;18 与 12 的最大公约数为 6 。短除法短除法是求最大公因数的一种方法&#xff1a;先把每…

canal mysql从库_Canal 实现 Mysql数据库实时数据同步

简介1.1 canal介绍​ Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团(包括https://www.taobao.com)&#xff0c;以提供可靠的低延迟增量数据管道&#xff0c;github地址&#xff1a;https://github.com/alibaba/canalCanal Server能够解析MyS…

模型剪枝和量化_人脸识别系统之模型压缩裁剪量化

本文用途仅仅是在前人经验下&#xff0c;自我总结&#xff0c;以供以后学习使用&#xff0c;若有错误&#xff0c;敬请您批评指正。应用背景&#xff1a;深度学习的应用加速了计算机视觉领域的发展&#xff0c;但是随着模型深度的加深&#xff0c;也带来了高额的存储空间、计算…

代码生成器开发笔记(2)-数据库架构

代码生成器开发笔记(&#xff12;)&#xff0d;数据库架构 程序 2009-06-13 01:30:01 阅读55 评论0 字号&#xff1a;大中小 订阅 要完成代码生成器&#xff0c;第一个要解决的是完全解析数据库架构。 对SQL Server当然没什么问题&#xff0c;早在ADO时代就可以通过查询sy…

mysql on linux 安装_MySQL on Linux手动安装方法

MySQL on Linux手动安装方法发布时间:2007-06-05 11:44:45来源:红联作者:TecCTO1. 下载"mysql-standard-5.0.27-Linux-i686-icc-glibc23.tar.gz"&#xff0c;推荐ICC版本&#xff0c;据称比GCC性能提高10-20%2. 复制到/usr/local/&#xff0c;解压&#xff1a;tar zx…

MongoDB最新最佳连接工具:Robo 3T

MongoDB连接工具 像使用Mysql&#xff0c;喜欢用Navicat连接工具一样。 在使用MongoDB数据库的时候&#xff0c;同样可以使用Robo 3T图形化工具。 一、下载Robo 3T Robo 3T官网 Studio 3T&#xff1a;专业人士使用的&#xff0c;需要付费。 Robo 3T&#xff1a;虽然免费&…

mysql audit_mysql5.7添加日志审计插件audit-plugin

来自McAfee的MySQL插件&#xff0c;为MySQL提供审计功能&#xff0c;重点是安全性和审计要求。该插件可以用作独立的审核解决方案&#xff0c;也可以配置为将数据提供给外部监视工具。插件下载地址&#xff1a;首先查看mysql的插件保存目录&#xff1a;mysql> show global v…