如何传递参数来添加事件列表侦听器函数?

2022-08-29 23:19:42

情况有点像——

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

问题在于 的值在 的侦听器函数中不可见,在 听器函数中,它可能被视为一个新变量。someVaraddEventListener


答案 1

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

例:

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是一种面向原型的语言,记住!


答案 2

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

function() { some_function(someVar); } 

已创建。

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

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