关于一个js处理json的问题

王者_来归 2018-01-17 11:14:12
先上代码

$.ajax({
type : 'post',
async : false,
url : url,
success : function(data) {
if(data != null) {
var uj = eval(data);
for (var i = 0; i < uj.length; i++) {
var id = uj[i].id;
...
var a_ = document.createElemenet("a");
a_.setAttribute("href","javascript:void(0)");
a_.onclick = function() {
console.log(id);
}
...
}
}
}
});


问题:
在上述代码中,当点击a时,打印的日志中的id永远是uj中最后一条记录的ID,请问一下,这个问题如何解决?
谢谢!
...全文
279 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
王者_来归 2018-01-17
  • 打赏
  • 举报
回复
顶一下,要沉了
王者_来归 2018-01-17
  • 打赏
  • 举报
回复
引用 4 楼 Ragin 的回复:
var uj = eval(data)
for(var i = 0; i< uj.length;i++){
	(function(){
		console.log(uj[i].id);
		//代码。。。。
	})(i)
}
大神啊,完善解决问题。 非常感谢!!!!!!
Braska 2018-01-17
  • 打赏
  • 举报
回复
var uj = eval(data)
for(var i = 0; i< uj.length;i++){
	(function(){
		console.log(uj[i].id);
		//代码。。。。
	})(i)
}
maradona1984 2018-01-17
  • 打赏
  • 举报
回复
1.把id放到到a标签里做一个自定义属性,比如a_.setAttribute("data-id",id);在function中取出来 2.构造一个闭包

var arr = ['aaa','bbb','ccc'];
			for(var i=0;i<arr.length;i++){
				var id = arr[i];
				var test = function(){
					var m = id;
					var a_ = document.createElement("a");
	               	a_.setAttribute("href","javascript:void(0)");
	               	a_.appendChild(document.createTextNode("这是一个测试"));
	               	a_.onclick = function() {
	                	console.log(m);
	                }
	               	document.body.insertBefore(a_,document.body.childNodes[0]);
				}
				test();
			}
戎码亿升 2018-01-17
  • 打赏
  • 举报
回复
应该把for循环放在点击事件的function内部吧,再把console.log(id)放到for循环内部

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧