Javascript在动态创建的DOM对象上动态设置DOM对象事件

Javascript在动态创建的DOM对象上动态设置DOM对象事件,javascript,javascript-events,Javascript,Javascript Events,以下脚本: 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); };

以下脚本:

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;
}
var containerDIV=document.getElementById(“sampleContainer”);
对于(变量i=0;i<5;i++)
{
var dynamicDIV=document.createElement(“div”);
容器IV.附件(动态)IV;
dynamicDIV.onclick=function(){alert(i);};
dynamicDIV.innerHTML=“行:”+i;
}
单击动态行时,警报框中的输出将为“5”,而不是0、1、

有人知道分配onclick事件的正确方法吗

提前谢谢

您应该使用:

for(变量i=0;i<5;i++){
(职能(一){
dynamicDIV.onclick=函数(){
警报(一);
};
})(i) );
}

演示:

谢谢,它确实有效!!我仍然不明白为什么,但我希望在阅读了mozilla dev的文章后得到它:)祝你有一个愉快的一天@steax闭包是JavaScript最重要的特性之一。我建议你读一下。你好
for (var i = 0; i < 5; i++) {
    (function(i) {
        dynamicDIV.onclick = function() {
            alert(i);
        };
    })(i);
}