gpt4 book ai didi

javascript - 根据迭代器更改 eventListener 函数参数。 (原版 JS)

转载 作者:行者123 更新时间:2023-12-02 18:29:46 25 4
gpt4 key购买 nike

我想要什么:我有一个方法,它将 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/

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