当我尝试使用如下参数附加事件处理函数时:
myhandle.onclick = myfunction(param1,param2);
function myfunction(param1,param2){
}
现在我想在我的处理函数中访问事件对象。在发送事件对象的网页上提到了一种方法,如:
myhandle.onclick = myfunction(event,param1,param2);
但是当我测试它的时候,它的给定事件对象没有定义。
我知道库使这件事很容易,但我正在寻找一个原生的JS选项。
3条答案
按热度按时间6yjfywim1#
我的句柄.onclick =我的函数(参数1,参数2);
这是JavaScript级别上常见的初学者错误,不是库可以真正修复的。
您没有将
myfunction
指定为单击处理程序,而是调用myfunction
,将param 1和param 2作为参数,并将函数的返回值指定为onclick
。myfunction
不返回任何值,因此您将undefined
指定为onclick
,这不会产生任何效果。你的意思是给
myfunction
本身赋一个引用:为了传递一些额外的参数,你必须创建一个包含这些参数值的闭包,这通常是通过匿名内联函数来完成的,如果需要的话,它也可以负责传递事件(尽管无论哪种方式,你都需要为IE做一个备份计划,因为IE的事件对象不是作为参数传递的):
在ECMAScript Fifth Edition中(这将是JavaScript的未来版本),您可以更轻松地编写以下代码:
(with
window
是this
的虚拟值,在本例中不需要。)然而,由于今天的许多浏览器不支持第五版,如果你想使用这种方法,你必须为老的浏览器提供一个实现。下面是另一个独立示例。
cqoc49vn2#
我不太清楚你想干什么,但也许像这样的东西就是你要找的?
这样做的最终结果是
myfunction
内部的匿名函数将作为onclick
处理程序被调用,从而打印事件和两个参数。这两个参数在添加事件处理程序时是固定的,而event
将在用户每次单击myhandle
时更改。7ajki6be3#
试试这个:
在myfunction()内部。