如何将参数传递给 addEventListener 侦听器函数?

新手上路,请多包涵

情况有点像——

var someVar = some_other_function();
someObj.addEventListener("click", function(){
    some_function(someVar);
}, false);

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

原文由 Abhishek Yadav 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 962
2 个回答

您编写的代码绝对没有问题。 some_functionsomeVar 都应该是可访问的,以防它们在匿名的上下文中可用

function() { some_function(someVar); }

被创建。

检查警报是否为您提供了您一直在寻找的值,确保它可以在匿名函数的范围内访问(除非您有更多代码在调用 addEventListener 旁边的同一个 someVar 变量上运行)

 var someVar;
 someVar = some_other_function();
 alert(someVar);
 someObj.addEventListener("click", function(){
 some_function(someVar);
 }, false);

原文由 Sergey Ilinsky 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

例子:

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

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

原文由 Zaloz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题