基础知识javascript--事件

群里有一个小伙伴在处理事件监听函数的时候,遇到了一点问题,正好我比较空闲,于是帮他指出了代码中的问题,顺便整理一下,方便以后遇到类似问题的伙伴们有一个参考。

这是一个很简单的问题,对于基础知识比较杂实的同学来说。下边用代码简单展示一下:

 var btn = document.querySelector(‘#btn‘);

 btn.addEventListener(‘click‘,function(){

     callback();

 },false);

 function callback(){
     var event = event.target || event.srcElement;
     console.log(event) // 为什么event为未定义?
 }

这显然是未定义的,估计那个小伙伴以为event和window一样,是系统免费送的参数,看来这样用报错,于是他就在群里问起来了。然后我告诉他问题在哪里,很快,他就改好了。

 var btn = document.querySelector(‘#btn‘);

 btn.addEventListener(‘click‘,callback,false);

 function callback(event){
     var event = event.target || event.srcElement;
     console.log(event)
 }

他开心的告诉我,问题解决了。可是问题又来了,为什么我没有在callback中传入实参,函数运行的时候也可以收到值呢?真是个爱思考的好孩纸。我决定帮他弄清楚这个问题。

于是打算写这篇博客来详细分析一下。

首先从

 btn.addEventListener(‘click‘,callback,false);这里看过来,系统会默认给callback传递一个event参数。我们打开Chrome浏览器的控制台一看,就明白了:也就是说,默认情况下,只有一个参数,且参数的名字就是event,这也就是为什么程序员们大都喜欢用event来做为事件回调函数形参数的原因了。既然说的是默认情况,那么也就会对应存在一些人为指定的情况,这个稍微有点复杂,我在稍后再说。接着看
function callback(event){}其实这个地方的形参随便用什么名字都无所谓了,只是习惯上用event的话,可读性强一点,你硬要用arg之类的名字也可以。
event.target || event.srcElement;这是为了处理浏览器之间的兼容性问题,百度一下,找到它们的历史源头也不难。

如果要在callback中,除了event之外,还要人加入自己定义的参数怎么办?
 btn.addEventListener(‘click‘,callback.bind(this,[‘a‘,‘b‘]),false);

或者,在callback外边再包一层

 btn.addEventListener(‘click‘,function(event){
    callback(event,‘a‘,‘b‘);
},false);

当然,还有更好的解决方法,那就是用 handleEvent 这个属性。

var obj = {

handleEvent : function(event){

callback(event,‘a‘,‘b‘,‘....‘)

},

click      :   function(){

   btn.addEventListener(‘click‘,this,false);

}

}

好了,关于事件的常见用法就分析到这里了,其它都是这些知识点的排列组合。

如果您觉得这文章对您有帮助,请点击【推荐一下】,想跟我一起学习吗?那就【关注】我吧!

时间: 2024-10-13 16:18:48

基础知识javascript--事件的相关文章

C#基础知识之事件和委托

本文中,我将通过两个范例由浅入深地讲述什么是委托.为什么要使用委托.事件的由来..Net Framework中的委托和事件.委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论. 委托的引入:将方法作为方法的参数 我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问候的话语: public void GreetPeople(string name) { EnglishGreeting(name); } public

JavaScript 基础知识梳理——事件

事件 1)事件是文档或浏览器窗口中发生的特定的交互瞬间. JavaScript和HTML之间的交互是通过事件实现的. 2)事件流——描述的是从页面中接受事件的顺序 IE——事件冒泡流 Netscape——事件捕获流 3)事件冒泡:即事件最开始由最具体的元素(文档中嵌套层次最深的哪个节点)接收,然后逐级向上传播至最不具体的哪个节点(文档). click事件在input触发,它会一级一级往上冒,直到冒到document上 点击按钮不但触发了按钮,也触发了div.body直到document 4)事件

基础知识 JavaScript

ES6 - const const 实际上保证的是不是变量的值不得改动,而是变量指向的内存地址不得改动. 对于简单数据类型(数值,字符串,布尔值),值就保存在指向的内存地址等同于常量. 对于复合类型的数据(对象和数组)变量指向的内存地址只是一个指针,只能保证指针是不变的,不保证指针指向的内容是不变的. ES6 - 解构 参考此处:ES6非常棒的特性-解构 基本描述 解构的目的是简化变量的获取和使用,减少程序代码的书写量. 解构就是从字符串.数组或者object中提取一个或一些元素的值并存入相对更

JavaScript 之基础知识

JavaScript 基础知识 JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaScript 是因特网上最流行的脚本语言. JavaScript 很容易使用!你一定会喜欢它的! JavaScript 简介 在数百万张页面中,JavaScript 被用来改进设计.验证表单.检测浏览器.创建cookies,等等等等.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的

转载 前端基础知识体系 一个新手的学习之路

原帖地址:  转载的原因是我学习前端和php已经4个多月了.看看自己还有那些不足.自己得努力学习,牛人太多.红色是我会的,或者学过的.希望今天把大部分飘红. 一.HTML 标签的分类 标签表示一个元素 按性质划分: Block-Level和Inline-Level 按语义划分: Headings: h1, h2, h3, h4, h5, h6 Paragraphs: p Text Formatting: em, strong, sub, del, ins, small Lists: ul, li

(1)JavaScript基础知识

Javascript基础知识 1.如何使用JavaScript (1).通过<script></script>中直接编写 (2).通过<script src='目标文档的URL'></script>链接外部的Js文件 ① <script  src="URL" type="text/javascript" charset="utf-8"></script> (3).作为某个元素

javascript中BOM部分基础知识总结

一.什么是BOM BOM(Browser Object Document)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window: BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性: BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分. 二.学习BOM学什么 我们将学到与浏览器窗口交互的一些对象,例如

JS基础知识回顾:在HTML中使用JavaScript

想HTML页面中插入JavaScript的主要方法就是使用<script>元素. HTML4.01当中为<script>元素定义了下列6个属性: language(已废弃):原来用于表示编写代码使用的脚本语言,如JavaScript.JavaScript1.2.VBScript等,由于大多数浏览器会忽略此属性,因此就没有必要再用了: type(可选):可以看成是language的替代属性,表示编写代码使用的脚本语言的内容类型,也被称作MIME类型,在未指定此属性的情况下会被默认为t

《JAVASCRIPT高级程序设计》表单基础知识和文本框脚本

在HTML中,表单是由<form>元素来表示,在javascript中,表单对应的是HTMLFormElement类型,它具有一些独有的属性和方法: 一.表单基础知识 1.取得表单的方式 var form = document.getElementById("form1");//取得页面中id=form1的元素 var form1 = document.forms[0];//取得页面中的第一个表单 var myform = document.forms["myFo

day29—JavaScript中DOM的基础知识应用

转行学开发,代码100天--2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通过对DOM的基本了解,还要通过代码实现对DOM的操作. 1.childNodes + nodeType 与children的区别 <ul id= "ull"> <li>1</li> <li>2</li> <li>3&l