2 imaginecode ImagineCode 于 2016.04.24 14:54 提问

Javascript 数组覆盖问题

有这么一段代码:

        var datas=[];
        var data={};
        var i=0;
        $(".baby-panel").each(function(){
            var baby_id=$(this).children(".babyid").attr("baby_id");
            var baby_name=$(this).children(".babyname").find("input[name='baby"+i+"_name']").val().trim();

            var baby_sex=$(this).children(".babysex").find("input[type=radio]:checked").val();
            var baby_birth=$(this).children(".babybirth").find(".form-control").val();

            data["id"]=baby_id;
            data["name"]=baby_name;
            data["sex"]=baby_sex;
            data["birth"]=baby_birth;

            datas[i]=data;
            i++;
        });

**问**:如何循环将data的数据添加到datas中,现在datas的数据都是data的最后一条记录。
例如:data={["id":1,"name":1,"sex":1,"birth":2014-05-05],["id":2,"name":2,"sex":2,"birth":2014-06-05]}

经过each()遍历后,datas的输出**却是**[{"id":"2","name":"2","sex":"2","birth":"2014-06-05"},{"id":"2","name":"2","sex":"2","birth":"2014-06-05"}],

而不是:[{"id":"1","name":"1","sex":"1","birth":"2014-05-05"},{"id":"2","name":"2","sex":"2","birth":"2014-06-05"}]

3个回答

ImagineCode
ImagineCode   2016.04.24 16:58
已采纳

解决方法:

            var datas=[];
    //var data={};//把data放到循环里面,否则会覆盖
    var i=0;
    $(".baby-panel").each(function(){
                    **  var data={};//每次新建一个data**
        var baby_id=$(this).children(".babyid").attr("baby_id");
        var baby_name=$(this).children(".babyname").find("input[name='baby"+i+"_name']").val().trim();

        var baby_sex=$(this).children(".babysex").find("input[type=radio]:checked").val();
        var baby_birth=$(this).children(".babybirth").find(".form-control").val();

        data["id"]=baby_id;
        data["name"]=baby_name;
        data["sex"]=baby_sex;
        data["birth"]=baby_birth;

      **  datas.push(data);**
        i++;
    });
CSDNXIAOD
CSDNXIAOD   2016.04.24 15:02

javascript数组问题
JavaScript规范之数组
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

ImagineCode
ImagineCode 不是我想要的
一年多之前 回复
u013321534
u013321534   2016.04.24 15:46

用数组的push方法加进来

ImagineCode
ImagineCode push也是一样的结果
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!