鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 關于數(shù)組push對象的問題

關于數(shù)組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中,但是在控制臺中發(fā)現(xiàn)結(jié)果如下:

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

我想存入的結(jié)果是如下:

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

就是讓程序能夠自動獲得每個input標簽的name屬性作為存入對象的屬性,代碼要怎么修改呢?為什么我這樣寫不行呢?先謝了!

回答
編輯回答
墨沫

以變量為鍵名時,應該用 []運算符,而不是 .運算符,所以

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

應該改為

var obj = {};
obj[prop] = $('#div input')[i].value;
history.push(obj);
2018年6月25日 04:54
編輯回答
脾氣硬
history.push({ [prop]: $('#div input')[i].value });

或者

var h = {};
h[prop] = $('#div input')[i].value;
history.push(h);
2018年8月10日 20:21