博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DOM中事件处理程序的第一个参数?
阅读量:6983 次
发布时间:2019-06-27

本文共 1083 字,大约阅读时间需要 3 分钟。

我们知道,在触发DOM上的某个事件时,会产生一个事件对象,其中包含与事件相关的所有信息。中有这样一句话,兼容DOM的浏览器会将一个事件对象传入到事件处理程序中,无论指定事件处理程序时使用什么方法,DOM0级或是DOM2级别,都会传入事件对象。

事件处理程序有参数时直觉上还好理解,但是事件处理程序要是一个参数都没有指定,事件对象真的会传入事件处理程序吗?

以一个按钮<input type="button" value="Click Me" id="myBtn">为样本,我们可以看看是否真的如此。

var btn = document.getElementById("myBtn");function showMessage() {  console.log("Clicked");  console.log(arguments.length);  console.log(arguments[0].type);}btn.onclick = showMessage;

上面代码,使用DOM0级的方法为按钮myBtn绑定了一个没有指定任何参数的事件处理程序,点击按钮后,控制台依次输出Clicked1clickarguments对象是一个类数组对象,包含着传入函数中的所有参数,利用它,我们可以获得关于参数的信息。从结果可以看出,浏览器确实将一个事件对象传入到事件处理程序,即便事件处理程序没有指定任何参数。

下面,看看事件处理程序指定参数的情况。

var btn = document.getElementById("myBtn");function showMessage(event) {  console.log("Clicked");  console.log(arguments.length);  console.log(arguments[0] === event);  console.log(event.type);}btn.onclick = showMessage;

点击按钮后,控制台依次输出Clicked1trueclick。从结果可以得出,传入一个参数时,该参数名成为arguments[0]的别名,参数和arguments[0]指向同一个对象。因为是别名,所以传入的参数名可以是任何合法的标识符,之所以使用标识符event,是因为它更能表意,也是大家默认的习惯。

现在,可以得出结论了,无论指定事件处理程序时使用什么方法,事件处理程序始终有一个参数,也就是事件对象,由浏览器传入,保存在arguments[0]。


参考资料

转载地址:http://qotpl.baihongyu.com/

你可能感兴趣的文章
解读阿里云oss-android/ios-sdk 断点续传(多线程)
查看>>
ML之监督学习算法之分类算法一 ——— 决策树算法
查看>>
骡夫电商地址
查看>>
亚信安全火力全开猎捕“坏兔子”,全歼详解
查看>>
[二]RabbitMQ-客户端源码之AMQConnection
查看>>
通过添加HTTP Header实现上下文数据在WCF的自动传递
查看>>
Emacs之魂(三):列表,引用和求值策略
查看>>
【ARM】一步一步移植Linux Kernel 2.6.13到板子
查看>>
智能家居——IoT零基础入门篇
查看>>
《Linux From Scratch》第一部分:介绍 第一章:介绍-1.3. 更新日志
查看>>
阿里将在雄安新区设3家子公司:涉AI、蚂蚁金服和菜鸟;北航设立全国首个人工智能专业,与百度合作办学...
查看>>
Powershell指令集_2
查看>>
归并排序算法
查看>>
北京第一个公共云计算平台即将诞生
查看>>
5G频谱相争“兵戎相见”各相部署风起云涌
查看>>
安全自动化在于信任,而非技术
查看>>
缘何Square可以在移动支付领域上成功?
查看>>
云计算从“仰望星空”到“脚踏实地”
查看>>
台积电要造第一款7nm芯片 明年下半年可投产
查看>>
《逻辑与计算机设计基础(原书第5版)》——3.9 二进制加法器
查看>>