我想要什么: 我有一个方法,它将 int 作为其唯一参数,然后我创建一个列表,其中每个元素在单击时将调用另一个函数,我唯一想要更改的是每个元素在单击时传递的数字。
我有:
while(++i<e){
(...)
a.addEventListener('click',function(){selectUser(i)},false);
(...)
}
当然,明显的问题是,当调用时,它总是会传递'i'的最终值。 我需要每个元素传递“i”创建时所具有的值。 IE;当 i=3 时,我希望它翻译成:
a.addEventListener('click',function(){selectUser(3)},false);
我猜它涉及某种方法,该方法返回另一个具有实际值的方法,但我不太确定如何实现它。我对 js 的经验很少。
提前致谢。
最佳答案
这是一个经典的闭包问题。您必须将事件处理程序包含在闭包函数中,该函数保留变量 i 的状态。像这样...
while(++i<e){
(...)
(function(index){
a.addEventListener('click',function(){selectUser(index)},false);
})(i);
(...)
}
这样,包装函数的每次调用都会保留变量 i 的状态,从而为您提供正确的结果。
关于javascript - 根据迭代器更改 eventListener 函数参数。 (原版 JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945586/