Я отлаживаю немного Javascript, который страдал от небольшой проблемы с закрытием - но, похоже, не смог передать аргумент «событие» в функцию.Вот проблема (сокращенно):
// let's say links.length == 3
for(var i = 0; i < links.length; i++){
links[i].onclick = function(e){
alert(i); //closure! all links alert "3"
// do something with "e"
}
}
Вот мое решение
//workaround
// define function outside of loop
function outer(e,i){
return function(){
alert(i); //closure! all links alert "3"
// do something with "e"
}
}
for(var i = 0; i < links.length; i++){
links[i].onclick = outer(e,i); //uh oh! e = undefined???
}
В своем обходном пути я определил функцию вне цикла, чтобы предотвратить замыкание - но я не могупередать ему аргумент "е".Может ли кто-нибудь указать мне правильное направление?