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、クリック ハンドラーの実行時に決定されるためです。したがって、常に の値を持ちます。これは、ループの後にmyhand.length - 1残った状態です。ifor

于 2013-02-26T12:12:18.150 に答える