var data=[];
var jn={};
var obj;
$(".btn-success").click(function(){
$(".list-group li").each(function(e){
obj=$(".list-group li").eq(e);
jn.id=obj.attr('id');
jn.sort=e;
data.push(jn);
console.log(jn);
})
console.log(data);
})
为什么data里的值都是一样的
var data=[];
var jn={};
var obj;
$(".btn-success").click(function(){
$(".list-group li").each(function(e,item){
jn ={};
jn.id=$(item).attr('id');
jn.sort=e;
data.push(jn);
console.log(jn);
})
console.log(data);
})
因为你的 jn
一直都是同一个.
把你的 var jn = {};
放在这一行后面obj=$(".list-group li").eq(e);
因为jn引用的都是同一个对象,你塞了99次同一个jn到data里,所以会一样。
var data=[];
var obj;
$(".btn-success").click(function(){
$(".list-group li").each(function(e){
obj=$(".list-group li").eq(e);
var jn={};
jn.id=obj.attr('id');
jn.sort=e;
data.push(jn);
console.log(jn);
})
console.log(data);
})
改一下再试试
对象是引用类型,放在堆里面,当把对象放到数组里时,其实是指向原来的对象,然后,对象变了,也就是数组里面对象变了。(感觉自己说的有些混乱)