0

有人可以告诉我为什么当我单击生成的名称列表(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);
        });
    }
}
4

2 回答 2

1

你想看看循环内的 JavaScript 闭包——简单实用的例子。正如该问题的答案所说,您可以创建一个函数来返回一个,或者您可以在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)));
}
于 2013-02-26T12:22:16.583 回答
0

因为 的值i是在单击处理程序运行时确定的。所以它总是有 的值,这是你在-loop之后myhand.length - 1留下的状态。ifor

于 2013-02-26T12:12:18.150 回答