鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  HTML/ 關(guān)于數(shù)組push對(duì)象的問(wèn)題

關(guān)于數(shù)組push對(duì)象的問(wèn)題

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 = [];
        //先清除原來(lái)的緩存
        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);
    })
})

點(diǎn)擊button后,我是想將input中的值存入localstorage中,但是在控制臺(tái)中發(fā)現(xiàn)結(jié)果如下:

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

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

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

就是讓程序能夠自動(dòng)獲得每個(gè)input標(biāo)簽的name屬性作為存入對(duì)象的屬性,代碼要怎么修改呢?為什么我這樣寫(xiě)不行呢?先謝了!

回答
編輯回答
墨沫

以變量為鍵名時(shí),應(yīng)該用 []運(yùn)算符,而不是 .運(yùn)算符,所以

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

應(yīng)該改為

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