javascript - 新手,json基础应用不会呀
阿神
阿神 2017-04-10 16:06:24
[JavaScript讨论组]
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里的值都是一样的

阿神
阿神

闭关修行中......

全部回复(3)
PHP中文网

因为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);
  })

改一下再试试

怪我咯

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

})

阿神

对象是引用类型,放在堆里面,当把对象放到数组里时,其实是指向原来的对象,然后,对象变了,也就是数组里面对象变了。(感觉自己说的有些混乱)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号