有人可以告诉我为什么当我点击生成的名单(myhand)旁边创建的[s] href时,它总是说选择而我是5?
var printDD = function(myhand, mydiv){
var dtext = "";
for(var i = 0; i < myhand.length; i++){
dtext += '<a href="#" id="dd'+i+'">[s]</a>' + myhand[i] + ', ';
}
mydiv.html(dtext);
for(var i = 0; i < myhand.length; i++){
$('#dd'+i).click(function(){
selection = i;
console.log("sel: " + selection + " i: " + i);
});
}
}
答案 0 :(得分:1)
您想看看JavaScript closure inside loops – simple practical example。正如该问题的答案所示,您可以创建一个函数来返回一个函数,或者您可以在for
循环中使用内联函数调用,如下所示:
for(var i = 0; i < myhand.length; i++) {
$('#dd'+i).click((function(x) {
return function () {
selection = x;
console.log("sel: " + selection + " x: " + x);
}
}(i)));
}
答案 1 :(得分:0)
因为i
的值是在运行点击处理程序时确定的。所以它总是具有myhand.length - 1
的值,这是i
- 循环之后离开for
的状态。