0

次のスクリプト:

var containerDIV = document.getElementById("sampleContainer");

for(var i = 0; i < 5; i++)
{
    var dynamicDIV = document.createElement("div");
    containerDIV.appendChild(dynamicDIV);   
    dynamicDIV.onclick = function() { alert(i); };
    dynamicDIV.innerHTML = "Row: " + i;
}

動的な行をクリックすると、アラート ボックスの出力は常に 0、1、.. ではなく「5」になります。

onclick イベントを割り当てる適切な方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1

1

クロージャーパワーを使用する必要があります:

for (var i = 0; i < 5; i++) {
    (function(i) {
        dynamicDIV.onclick = function() {
            alert(i);
        };
    })(i);
}

デモ: http://jsfiddle.net/zvPfZ/

于 2012-12-05T15:15:07.740 に答える