Onclick仅在循环中添加到最后一个元素

Sir*_*Sir 6 javascript

可能重复:
在for循环中分配单击处理程序

我的代码中需要一个循环的帮助.

我遍历一个数组并添加点击div.但它总是在循环的最后一个循环中添加onclicks并有效地取消之前的循环.

所以我把它作为我的循环:

    start = 0;

for(i = start; i < (start+8); i++){ //8 per page
    if(i == array.length){ 
        break;  //page end
    } else {
        (function(i){
             document.getElementById('cell'+i).onclick = function(){ select(i); }
        })(i);  
    }
}
Run Code Online (Sandbox Code Playgroud)

什么发生在这里是DIV ID cell7获取上点击添加,但div编号cell0至cell6没有.我猜它与i循环中的变化这样的事实有关,这也影响i了函数?

我该如何解决这个问题?

Sir*_*Sir 1

我不知道为什么,但这些建议并没有解决我的问题 - 但我设法通过添加到 onclicks 来解决它,因为我在循环期间显示 div,所以我最终做了:

innerHTML = '<Div onclick="">'; //etc etc
Run Code Online (Sandbox Code Playgroud)

不要将 div 添加到输出“然后”稍后分配 onclicks...不知道我的新方法是否是最佳选择,但它有效,所以我必须坚持下去!

  • 你和其他人的演示对我有用。你用的是IE6还是什么的?顺便说一句,标签名称应该*始终*小写,即: `&lt;div onclick=""&gt;` (2认同)