无法添加到已初始化的数组中

时间:2017-04-02 07:59:05

标签: javascript arrays

document.getElementById('form').addEventListener('submit', saveItem);
function saveItem(e){
var items= document.getElementById('items').value;
var date= document.getElementById('date').value;
var price= document.getElementById('price').value;
var expense= {
    items: items,
    date: date,
    price: price
}


if(localStorage.getItem('bill')==null){
var bill=[];
 bill.push(expense);
 localStorage.setItem('bill', JSON.stringify(expense));


} else{

var bill = JSON.parse(localStorage.getItem('bill'));

bill.push(expense);
localStorage.setItem('bill', JSON.stringify(expense));
console.log(bill);

}
e.preventDefault();
} 

如果

没有错误
if(localStorage.getItem('bill')==null)

但是其他地方出现错误

 Uncaught TypeError: Cannot read property 'push' of undefined
  at HTMLFormElement.saveItem

当本地存储空时存储数据,但如果数据不存储则无法添加数据。

2 个答案:

答案 0 :(得分:0)

请检查一下JSON.parse(localStorage.getItem('bill'));的结果是什么?它是一个有效的数组吗?

答案 1 :(得分:0)

您的费用是一个对象,您需要将帐单保存在本地存储中。

if(localStorage.getItem('bill')==null){
 var bill=[];
 bill.push(expense);
 localStorage.setItem('bill', JSON.stringify(bill));
}