可能的重复:
Javascript 循环内的事件处理程序 - 需要闭包吗? https://stackoverflow.com/questions/341723/event-handlers-inside-a-javascript-loop-need-a-closure
我通过 API 调用获取一些 json 对象。它的格式如下:-
{data:[{id:"1",name:"some1",url:"someurl1"},{id:"2",name:"some2",url:"someurl2"}...]}
我通过 jsonp 结果得到它,它的解析如下:-
function(results){
for(var i=0;i<10;i++){
item=document.createElement("div");
item.innerHTML=results.data[i].name;
item.onclick=function(){
console.log(results.data[i]); //--->this is where i am stuck
}
}
}
如何将特定对象从循环传递到 onclick 事件。我的意思是创建的第一个 div 应该有一个包含第一个对象的数据的 onclick 事件,第二个 div 应该有来自第二个对象的数据。
请询问我是否需要更多说明
编辑:-
如果我做这样的事情:-
item.onclick=function(){
console.log(results.data[1])
}
我在所有项目的 onclick 事件中获得该特定对象,但这不是我想要的
编辑:-
这就是我最终解决的方法。感谢 DCoder 指向的链接。
item.onclick =function(object){
return function(){
//do something with the object
}
}(obj);