关于数组push对象的问题

html代码:

<form id="div">
    姓名:<input type="text" name="name" value=""><br/>
    年龄:<input type="text" name='age' value=""><br/>
    <button id="save">一键缓存</button>
</form>

js代码:

$(function () {
    $('#save').click(function () {
        var history = [];
        //先清除原来的缓存
        window.localStorage.formHistory = '';
        for(var i = 0; i < $('#div input').length; i++){
            if( $('#div input')[i].type == 'text'){
                var prop = $('#div input')[i].name;
                alert(prop);
                history.push({ prop : $('#div input')[i].value});
            }
        }
        window.localStorage.formHistory = JSON.stringify(history);
    })
})

点击button后,我是想将input中的值存入localstorage中,但是在控制台中发现结果如下:

[{"prop":"11"},{"prop":"22"}]

我想存入的结果是如下:

[{"name":"11"},{"age":"22"}]

就是让程序能够自动获得每个input标签的name属性作为存入对象的属性,代码要怎么修改呢?为什么我这样写不行呢?先谢了!

阅读 3.5k
2 个回答
history.push({ [prop]: $('#div input')[i].value });

或者

var h = {};
h[prop] = $('#div input')[i].value;
history.push(h);

以变量为键名时,应该用 []运算符,而不是 .运算符,所以

history.push({ prop: $('#div input')[i].value});

应该改为

var obj = {};
obj[prop] = $('#div input')[i].value;
history.push(obj);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题