クロージャーが必要な次のコードがあります。
var numItems = document.getElementsByClassName('l').length;
for (var i = 0; i < numItems; i++) {
document.getElementsByClassName('l')[i].onclick = function (e){
preview(this.href, i);
};
}
何が起こるかというと、アイテムがクリックされるたびに、i に対して常に同じ番号をプレビューするということです
私がしなければならないことは
function indexClosure(i) {
return function(e) {
preview(this.href, i);
}
}
そして、onclick を次のように割り当てます。
document.getElementsByClassName('l')[i].onclick = indexClosure(i);
しかし、その後this
、私のリンクを参照しなくなります...この問題はどのように解決されますか?