什么';我的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,但根据控制台,您所做的并没有什么区别。是的,我注意到这是一个输入错误。谢谢