关于event参数

关于event参数

var a = document.getElementById("a");

EventUtil.addHandler(a, "click", function(event) {

EventUtil.preventDefault(event);

老师 这里为什么一定要传入event参数?我自己试了一下不写event的话代码效果就不成立了。

我觉得我是从逻辑上不理解为什么这里一定要传入一个参数呢?这个参数的作用是什么呢?

})


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,问题解答如下:

1. preventDefault: function(event) {} 里面的参数event是形参它可以改成其他字母,它的真正内容,取决于调用preventDefault方法时,传入的参数。这里使用event这个名字,只是为了看一眼就知道这个函数要传入事件对象event(事件对象的名字就是event)。

2. 事件处理函数的第一个参数就是事件对象event,它是默认就会有的,如下:

http://img1.sycdn.imooc.com//climg/5f6aa6db093bb3f908470325.jpg

对应我们这里,EventUtil.addHandler(a, "click", function(event) {})中的function(event){}是a的click事件的处理函数它的第一个参数是事件对象,我们这里为了方便,将参数名直接写成了event,它可以换成其他名字,如下:

http://img1.sycdn.imooc.com//climg/5f6aa6ef09ecf38211330321.jpg

事件对象event是默认就有的,所以不需要定义,使用时,直接在事件处理函数中,将第一个参数的形参写出来就行。

同学再理解一下。

祝学习愉快!

好帮手慕久久 2020-09-22 10:25:30

同学你好,问题解答如下:

  1. 事件处理函数的一个参数是事件对象(event),任何事件默认就会有该对象,它上面会记录一些有关事件的内容,比如这里的event,就是点击事件click的事件对象,它会记录触发click事件的元素是谁,鼠标点击时的位置坐标是什么......;当然,该对象上,也会有一些方法,比如preventDefault()这个事件就是事件对象才有的方法。

  2. 我们这里使用的是“EventUtil.preventDefault(event)”这个兼容性写法,来阻止默认行为,而EventUtil.preventDefault这个方法,是我们封装的,它是利用事件对象的方法和属性来实现目的的,所以它需要传入事件对象这个参数,如下:

    http://img1.sycdn.imooc.com//climg/5f695f5d0902527a07150292.jpg

    因此,在使用时,我们必须传入参数,如下:

    http://img1.sycdn.imooc.com//climg/5f69601e0915a15c06810118.jpg

同学试着理解一下。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 提问者 愛码仕 #1
    所以这里我只能写event,不能自定义其他的参数名传入其他的参数是吗?
    2020-09-23 03:45:10
  • 提问者 愛码仕 #2
    我看之前在设定方法时 preventDefault: function(event) { if(event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, 这个event就是个形参吗?我不写event写其他单词字母也可以吗? 我看之前没有var event = 。。。 的这个步骤,有时候感觉这个event来的莫名其妙的。
    2020-09-23 03:55:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师