博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js函数中传入的event参数
阅读量:4208 次
发布时间:2019-05-26

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

Event:

Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。 事件通常与函数结合使用,函数不会在事件发生前被执行!

event是事件的参数啊!在event中包含了事件触发时的参数,比如click事件的event中包含着.e.pageX,e.pageY,keydown事件中包含着ev.keyCode等,在ie中,event是全局的可以通过window.event来获取,在其他浏览器中都是作为参数传入的。

所以好多事件函数都是这样写:
mydiv.onclick = function(ev){
if(!ev){ev = window.event;} //这句也可以简写成:ev=window.event||ev;
alert(ev.pageX+”,”+ev.pageY);
}

如果没有传入event作为参数,在函数内部如何获取event呢?

js对于函数的定义是非常松,即使你在函数定义时未写任何参数,或者你定义的参数有多个,但是你调用时,一个参数也不填,也不会出错的。

因为js函数内默认有个变量,保存你的入参叫:arguments,
他是一个数组,下标从0开始,
所以获取event可以写成:

function eventTest(){    var event = window.event||arguments[0];    //target 就是这个对象    target = event.srcElement||event.target,    //这个对象的值    targetValue = target.value;}

当然,有的时候需要给函数传入几个参数,这时如果要用想用到event的话可以这么写

function eventTest(a,b){    var event = window.event || arguments.callee.caller.arguments[0]    //target 就是这个对象    target = event.srcElement||event.target,    //这个对象的值    targetValue = target.value;}

如果传入了参数却如第一种写法的话,则arguments中将会传入传入的参数,这时获取的arguments[0]就会是第一个传入的参数了。

鉴于此,故还是都用第二中方法获取更为稳妥。

转自:

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

你可能感兴趣的文章
c++设计模式之桥接模式
查看>>
c++设计模式之装饰模式
查看>>
Mysql学习笔记(八)- 两个简单实用的优化方法
查看>>
mysql学习笔记(九)- 增删改查的优化
查看>>
Jenkins学习笔记(一)
查看>>
AtomicInteger源码解析
查看>>
CopyOnWriteArraySet源码学习
查看>>
ThreadLocal学习笔记
查看>>
用talib实现基于emv的简易量化投资策略
查看>>
LongAdder源码解析
查看>>
Talib学习笔记(二)- 价格指数学习
查看>>
CAS机制是什么?
查看>>
Semaphore源码解析
查看>>
ConcurrentLinkedDeque源码解析
查看>>
ReentrantLock源码解析
查看>>
StampedLock源码解析
查看>>
ReentrantReadWriteLock源码解析
查看>>
springboot源码解析(四)
查看>>
CompletionService实践
查看>>
YApi在Window上离线安装笔记
查看>>