我有以下功能:
export function myoutsideClickHandler(menuRef) {
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
console.log(menuRef);
document.addEventListener('click', (menuRef)=>test1(menuRef), false);
}我可以看到menuRef是打印出来的,并且有价值。到目前一切尚好。
现在在test1()函数中,我有:
export function test1(e, menuRef){
console.log(menuRef);
}在控制台中,我看到undefined,这意味着尚未通过addEventListener发送menuRef
我传递menuRef参数的方式有问题吗?
发布于 2019-04-25 03:46:35
绑定事件的方式是错误的。你点击的menuRef将会是一个事件。您没有传递第二个参数。您的单击处理程序应为:
document.addEventListener('click', evt => test1(evt, menuRef), false);发布于 2019-04-25 04:05:57
您可以使用匿名函数来触发需要多个参数的回调函数。因此,在您的示例中,将myoutsideClickHandler()函数更改为以下内容应该是可行的:
export function myoutsideClickHandler(menuRef) {
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
console.log(menuRef);
document.addEventListener('click', function(e) {
test1(e, menuRef);
}, false);
}但是,我应该注意到,您没有正确使用事件处理程序,它们应该在单击处理程序函数之外调用和设置,因此您可能需要仔细阅读这一点,以避免将来出现问题。
https://stackoverflow.com/questions/55837374
复制相似问题