Javascript 阵列中的本地存储
我试图做的是获取用户的电子邮件和名称输入,并将其推入数组emailbook,它会将电子邮件和名称的.value推入数组,但每当我将其存储到localstorage时,它就会替换现有数组。请帮忙,谢谢Javascript 阵列中的本地存储,javascript,css,html,local-storage,Javascript,Css,Html,Local Storage,我试图做的是获取用户的电子邮件和名称输入,并将其推入数组emailbook,它会将电子邮件和名称的.value推入数组,但每当我将其存储到localstorage时,它就会替换现有数组。请帮忙,谢谢 <script> document.addEventListener("DOMContentLoaded",docIsReady); var emailbook; function docIsReady(){ em
<script>
document.addEventListener("DOMContentLoaded",docIsReady);
var emailbook;
function docIsReady(){
emailbook=localStorage.getItem("emailbook");
if (emailbook==null){
emailbook=[];
console.log(emailbook)
}
else {
emailbook=JSON.parse(emailbook);
console.log(emailbook)
}
}
function store() {
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var obj = {"name": name, "email": email};
emailbook.push(obj);
localStorage.setItem("email", JSON.stringify(emailbook));
}
console.log(localStorage);
//var storedemail = JSON.parse(localStorage.getItem("email"));
</script>
文件。添加的文件列表器(“DOMContentLoaded”,docIsReady);
var电子邮箱;
函数docIsReady(){
emailbook=localStorage.getItem(“emailbook”);
如果(emailbook==null){
emailbook=[];
控制台日志(emailbook)
}
否则{
emailbook=JSON.parse(emailbook);
控制台日志(emailbook)
}
}
函数存储(){
var name=document.getElementById(“name”).value;
var email=document.getElementById(“email”).value;
var obj={“name”:name,“email”:email};
emailbook.push(obj);
setItem(“email”,JSON.stringify(emailbook));
}
log(本地存储);
//var storedemail=JSON.parse(localStorage.getItem(“电子邮件”);
如何读取localStorage in store()方法,将所有内容推送到emailbook数组,推obj并将其保存到localStorage中
大概是这样的:
var name = "foobar";
var email = "mail";
var emailbook = [];
var obj = {"name": name, "email": email};
if(localStorage.getItem('email') != null) {
var tmp = JSON.parse(localStorage.getItem('email'));
for(let i = 0;i<tmp.length;i++) {
emailbook.push(tmp[i]);
}
}
emailbook.push(obj);
localStorage.setItem("email", JSON.stringify(emailbook));
var name=“foobar”;
var email=“mail”;
var emailbook=[];
var obj={“name”:name,“email”:email};
if(localStorage.getItem('email')!=null){
var tmp=JSON.parse(localStorage.getItem('email');
对于(设i=0;i您认为它替换现有数组是什么意思?它是否会使emailbook中的其他属性为空?localStorage属性是只读的,因此您无法对其进行编辑。localStorage只能使用save
、read
和remove
进行本地存储。localStorage按键存储值,您使用相同的键对其进行设置,当然会重新设置。)放置旧值。我假设您打算使用emailbook
作为键,例如localStorage.setItem(“emailbook”,JSON.stringify(emailbook));
@GeorgeDaniel By替换我所指的var emailbook的现有数组,例如emailbook={”abc@xyz.com“}问题是当我键入新电子邮件时,它会替换{”abc@xyz.com"}例如{”cba@xyz.com“}当我尝试它时,键和值只是更改为[{“name”:“foobar”,“email”:“mail”}]。我尝试更改var name=document.getElementById(“name”).value;对于email也是如此,但它只返回null try to log(console.log)“document.getElementById(“name”).value。如果它为null,那么问题出在html中(可能是错误的id?)。也请确保不要定义两次emailbook变量(我在store函数的作用域中再次定义了此变量,但您将其定义为全局变量)我记录了document.getElementById(“name”)。值,结果是它应该是的,但当我记录变量“name”时,结果为空
是的,我在!这是我的表单,我正试图在JSFIDLE中充分利用Works的价值:您可以发布整个解决方案或在出现问题的地方创建解决方案吗?您是否在浏览器中刷新了脚本?