我将eventlistener附加到页面上的按钮。单击时,它会运行一个函数。
harvestDataBtn.addEventListener("click", harvestData, false);
该函数可选择取值。
function harvestData(idsToHarvest)
我不希望单击按钮将任何内容传递给函数。可选变量idsToHarvest
用于被调用函数的其他实例,与单击分开。
然而,当我点击按钮时,idsToHarvest
是一个鼠标事件。在我的函数中使这个代码不能按预期工作。
if ( idsToHarvest ) {
// do something with string
} else {
// button was clicked, do something else
}
答案 0 :(得分:3)
您可以向事件侦听器传递一个函数,该函数将您所需的调用包装到harvestData
并忽略默认传递的事件对象:
harvestDataBtn.addEventListener("click", function (e){harvestData();}, false);
答案 1 :(得分:0)
git clean
第二个参数,在本例中是一个函数,它希望传入的参数是事件对象。
如果您将相同的函数用于其他目的并且期望参数是其他的,那么它将不能用作事件处理程序。
来自the spec,它声明:
事件监听器由以下字段组成:
- type (一个字符串)
- 回调(
el.addEventListener("click", function (event){ ... });
)- 捕获(布尔值,最初为假)
- 被动(布尔值,最初为假)
- 一次(布尔值,最初为假)
- 已删除(用于簿记目的的布尔值,最初为假)
如上所述,它显示EventListener
实际上是callback
,由显示的界面定义:
EventListener
如您所见,当评估回调并调用callback interface EventListener {
void handleEvent(Event event);
};
时,它接受handleEvent
类型的1个参数 event 。