gpt4 book ai didi

javascript - 如何将参数传递给 addEventListener 中传递的监听器函数?

转载 作者:行者123 更新时间:2023-11-30 08:59:41 25 4
gpt4 key购买 nike

anItem.addEventListener("click", iRespond, false);

问题是,我需要向 iRespond 传递一个参数,因为 iRespond 应该处理对许多项目的点击,我需要一种区分项目的方法。

我该怎么办?

最佳答案

简单的闭包:

var foo = "bar";
e.addEventListener('whee',function(evt){
iRespond(evt,foo);
},false);

当一个简单的闭包不起作用时(因为您正在锁定一个正在变化的变量,例如在一个循环中),您需要在该值上创建一个新的闭包:

foo.addEventListener('bar',(function(jim){
return function(evt){
iRespond(evt,jim); // Surprise surprise, jim is available here!
}
})(someValueToBeNamedJim), false);

例如:

var buttons = document.querySelectorAll('button');
for (var i=buttons.length;i--;)}
buttons[i].addEventListener('click',(function(j){
return function(){ alert("You clicked on button #"+j); };
})(i),false);
}

您可以选择在函数内部和外部为变量命名而不会出现问题——例如使用 i 而不是上面的 j — 但您可能会发现自己感到困惑。

关于javascript - 如何将参数传递给 addEventListener 中传递的监听器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com