首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过addEventListener将参数传递给函数

无法通过addEventListener将参数传递给函数
EN

Stack Overflow用户
提问于 2019-04-25 03:36:51
回答 2查看 28关注 0票数 0

我有以下功能:

代码语言:javascript
运行
复制
export function myoutsideClickHandler(menuRef) {
    console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
    console.log(menuRef);
    document.addEventListener('click', (menuRef)=>test1(menuRef), false);
}

我可以看到menuRef是打印出来的,并且有价值。到目前一切尚好。

现在在test1()函数中,我有:

代码语言:javascript
运行
复制
export function test1(e, menuRef){
    console.log(menuRef);
}

在控制台中,我看到undefined,这意味着尚未通过addEventListener发送menuRef

我传递menuRef参数的方式有问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 03:46:35

绑定事件的方式是错误的。你点击的menuRef将会是一个事件。您没有传递第二个参数。您的单击处理程序应为:

代码语言:javascript
运行
复制
document.addEventListener('click', evt => test1(evt, menuRef), false);
票数 4
EN

Stack Overflow用户

发布于 2019-04-25 04:05:57

您可以使用匿名函数来触发需要多个参数的回调函数。因此,在您的示例中,将myoutsideClickHandler()函数更改为以下内容应该是可行的:

代码语言:javascript
运行
复制
export function myoutsideClickHandler(menuRef) {
    console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
    console.log(menuRef);
    document.addEventListener('click', function(e) {
        test1(e, menuRef);
    }, false);
}

但是,我应该注意到,您没有正确使用事件处理程序,它们应该在单击处理程序函数之外调用和设置,因此您可能需要仔细阅读这一点,以避免将来出现问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55837374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档