【问题标题】:Javascript set DOM object event dynamically on dynamically created DOM objectsJavascript 在动态创建的 DOM 对象上动态设置 DOM 对象事件
【发布时间】:2012-12-05 15:13:51
【问题描述】:

以下脚本:

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;
}

单击动态行时,警告框中的输出将始终为“5”而不是 0、1、..

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

提前致谢!

【问题讨论】:

    标签: javascript javascript-events


    【解决方案1】:

    你应该使用the closure power:

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

    演示: http://jsfiddle.net/zvPfZ/

    【讨论】:

    • 感谢它确实有效!我仍然不明白为什么,但我希望在阅读 mozilla 开发文章后得到它:) 祝你有美好的一天!
    • @steax 闭包是 JavaScript 最重要的特性之一。我建议你阅读它。美好的一天;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2021-10-25
    • 2017-04-23
    • 2020-03-01
    • 1970-01-01
    相关资源
    最近更新 更多