我试图向这个问题提出类似的问题,但无法找到适合我的解决方案。我有以下代码
for(var i=0; i<keys.length; i++) {
document.getElementById("btn_"+keys[i]).addEventListener('click', function(){changeTab(keys[i]);});
}
现在在回调中执行此假keys[i]
,我显然不想要。我需要能够遍历keys数组并将当前值传递给回调中的函数调用。我该如何解决/实现这个目标?
答案 0 :(得分:1)
该事件也会传递给事件处理程序。您可以从那里获取目标元素,如下所示:
addEventListener('click', function (event) {
changeTab( event.target );
});`
或者,您可以将回调包装在单独的范围中以保留i
的值,如this answer
答案 1 :(得分:0)
我设法通过使用接受参数的外部函数来实现这一目的。
for(var i=0; i<keys.length; i++) {
!function outer(i){
document.getElementById("btn_"+i).addEventListener('click', function(){changeTab(i);})
}(keys[i])
}