首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何向addEventListener listener函数传递参数?

如何向addEventListener listener函数传递参数?
EN

Stack Overflow用户
提问于 2008-11-02 18:36:15
回答 30查看 593.7K关注 0票数 397

情况有点像-

代码语言:javascript
复制
var someVar = some_other_function();
someObj.addEventListener("click", function(){
    some_function(someVar);
}, false);

问题是someVar的值在addEventListener的侦听器函数中不可见,在那里它可能被视为一个新变量。

EN

回答 30

Stack Overflow用户

回答已采纳

发布于 2008-11-02 10:51:50

你所写的代码绝对没有任何错误。some_functionsomeVar都应该是可访问的,以防它们在匿名的上下文中可用

代码语言:javascript
复制
function() { some_function(someVar); } 

被创建了。

检查警报是否给出了您一直在寻找的值,确保它在匿名函数的作用域中是可访问的(除非您有更多的代码在addEventListener调用旁边的同一个someVar变量上操作)

代码语言:javascript
复制
var someVar; 
someVar = some_other_function();
alert(someVar);
someObj.addEventListener("click", function(){
    some_function(someVar);
}, false);
票数 268
EN

Stack Overflow用户

发布于 2012-08-16 20:14:11

为什么不直接从事件的target属性中获取参数呢?

示例:

代码语言:javascript
复制
const someInput = document.querySelector('button');
someInput.addEventListener('click', myFunc, false);
someInput.myParam = 'This is my parameter';
function myFunc(evt)
{
  window.alert(evt.currentTarget.myParam);
}
代码语言:javascript
复制
<button class="input">Show parameter</button>

记住,JavaScript是一种面向原型的语言!

票数 440
EN

Stack Overflow用户

发布于 2013-05-17 03:29:21

这个问题很老了,但我想我应该为后人提供一个使用es5的.bind()的替代方案。:)

代码语言:javascript
复制
function some_func(otherFunc, ev) {
    // magic happens
}
someObj.addEventListener("click", some_func.bind(null, some_other_func), false);

只需注意,您需要将第一个参数作为传递给bind (另一个函数)的参数设置侦听器函数,第二个参数现在是事件(而不是原来的第一个)。

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

https://stackoverflow.com/questions/256754

复制
相关文章

相似问题

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