什么';我的javascript本地存储有什么问题?

什么';我的javascript本地存储有什么问题?,javascript,json,local-storage,Javascript,Json,Local Storage,我正在编写一些使用浏览器本地存储的代码。第一个功能: function createLocalStore(){ if(window.localStorage.getItem("iTotal")===null){ window.localStorage.setItem("iTotal", 0); } if(window.localStorage.getItem("mTotal")===null){ window.localStorage.se

我正在编写一些使用浏览器本地存储的代码。第一个功能:

function createLocalStore(){
    if(window.localStorage.getItem("iTotal")===null){
        window.localStorage.setItem("iTotal", 0);
    }
    if(window.localStorage.getItem("mTotal")===null){
        window.localStorage.setItem("mTotal", 0);
    }
    if(window.localStorage.getItem("yTotal")===null){
        window.localStorage.setItem("yTotal", 0);
    }
    if(window.localStorage.getItem("purgeDate")===null){
        today= new Date();
        purgeDate= new Date(today.getYear(),today.getMonth(),today.getDay()+1);
        window.localStorage.setItem("purgeDate", purgeDate);
    }
    if(window.localStorage.getItem("purchIndex")===null){
        window.localStorage.setItem("purchIndex", 0);
    }
    if(window.localStorage.getItem("depIndex")===null){
        window.localStorage.setItem("depIndex", 0);
    }
}
工作得很漂亮。但是,这两个功能:

function storePurchase(n,p,d){
    index=window.localStorage.getItem("purchIndex");
    var purch={
        name1: n,
        price: p,
        date: d
    };
    if(window.localStorage.getItem("purch"+index)!==null){
        alert("storage error!");
    }
    else{
        window.localStorage.setItem("purch"+index,purch);
        window.localStorage.setItem("purchIndex", window.localStorage.getItem("purchIndex")+1);
        window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")-window.localStorage.setItem("purch"+index));
        window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")-window.localStorage.setItem("purch"+index));
        window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")-window.localStorage.setItem("purch"+index));
     }
}
function storeDeposit(p,d){
     index=window.localStorage.getItem("depIndex");
     var dep={
        price: p,
        date: d
     };
     if(window.localStorage.getItem("dep"+index)!==null){
        alert("storage error!");
     }
     else{
        window.localStorage.setItem("dep"+index,dep);
        window.localStorage.setItem("depIndex", window.localStorage.getItem("depIndex")+1);
        window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")+window.localStorage.setItem("dep"+index));
        window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")+window.localStorage.setItem("dep"+index));
        window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")+window.localStorage.setItem("dep"+index));
     }
}
由于某些原因,不要写入本地存储。我称之为:

var price = document.getElementById('pPrice').value;
var name = document.getElementById('pName').value;
var date=new Date();
var sDate = '<input type="hidden" class="createDate" value="'+date+'"></br>';
storePurchase(name, price, date);
var price=document.getElementById('pPrice').value;
var name=document.getElementById('pName').value;
变量日期=新日期();
变量sDate='
'; 门店采购(名称、价格、日期);

var price=document.getElementById('dPrice').value;
变量日期=新日期();
变量sDate='
'; 存储保证金(价格、日期);

所以我真的不确定问题出在哪里。如果有人能指出这一点,我将不胜感激。提前感谢您的帮助。

我想当您传递要保存的对象时,您不会期望localStorage如何工作

var purch={
    name1: n,
    price: p,
    date: d
};

window.localStorage.setItem("purch1",purch);
所以现在你打电话的时候

window.localStorage.getItem("purch1");
// result [object Object]
一定是这样

// to set json
window.localStorage.setItem("purch1",JSON.stringify(purch));
// to get json
var data = JSON.parse(window.localStorage.getItem("purch1"));
为什么不编写自己的代码来获取/设置数据(因为我看到大量代码,无法读取!)

现在,您可以使用此代码进行编写(仅举一个示例,编写您自己的代码以了解localStorage的工作原理,这将是一个很好的实践!)


问题

在此处调用
setItem
时没有传入值:

storePurchase

window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")-window.localStorage.setItem("purch"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")-window.localStorage.setItem("purch"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")-window.localStorage.setItem("purch"+index));

//The invalid portion from above:
window.localStorage.setItem("purch"+index)
window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")-window.localStorage.getItem("purch"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")-window.localStorage.getItem("purch"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")-window.localStorage.getItem("purch"+index));
storeDeposit

window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")+window.localStorage.setItem("dep"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")+window.localStorage.setItem("dep"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")+window.localStorage.setItem("dep"+index));

//The invalid portion from above:
window.localStorage.setItem("dep"+index)
window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")+window.localStorage.getItem("dep"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")+window.localStorage.getItem("dep"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")+window.localStorage.getItem("dep"+index));
解决方案

您可能是想调用
getItem

storePurchase

window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")-window.localStorage.setItem("purch"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")-window.localStorage.setItem("purch"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")-window.localStorage.setItem("purch"+index));

//The invalid portion from above:
window.localStorage.setItem("purch"+index)
window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")-window.localStorage.getItem("purch"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")-window.localStorage.getItem("purch"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")-window.localStorage.getItem("purch"+index));
storeDeposit

window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")+window.localStorage.setItem("dep"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")+window.localStorage.setItem("dep"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")+window.localStorage.setItem("dep"+index));

//The invalid portion from above:
window.localStorage.setItem("dep"+index)
window.localStorage.setItem("iTotal", window.localStorage.getItem("iTotal")+window.localStorage.getItem("dep"+index));
window.localStorage.setItem("mTotal", window.localStorage.getItem("mTotal")+window.localStorage.getItem("dep"+index));
window.localStorage.setItem("yTotal", window.localStorage.getItem("yTotal")+window.localStorage.getItem("dep"+index));

@ChristianGrabowski我并没有准确地解决这个问题,但我发现在localStorage中保存对象的操作是错误的。它存储了除这些函数中的内容以外的所有内容,唯一的区别是它应该是JSON,但根据控制台,您所做的并没有什么区别。是的,我注意到这是一个输入错误。谢谢