Javascript 如何替换本地存储中的数据

Javascript 如何替换本地存储中的数据,javascript,arrays,forms,local-storage,Javascript,Arrays,Forms,Local Storage,const newFirst=document.getElementById(“changeFName”); const newLast=document.getElementById(“changeLName”); const newMail=document.getElementById(“changeMail”); const newPass=document.getElementById(“changePass”); const saveMe=document.getElementByI

const newFirst=document.getElementById(“changeFName”);
const newLast=document.getElementById(“changeLName”);
const newMail=document.getElementById(“changeMail”);
const newPass=document.getElementById(“changePass”);
const saveMe=document.getElementById(“btn save”);
newData=(e)=>{//mouseclick
e、 预防默认值();
const first_name=changeFName.value;
const last_name=changeLName.value;
const e_mail=changeMail.value;
const pass_word=changePass.value;
让用户_数据={
newFirst:名字,
newLast:姓,
新邮件:电子邮件,
新通行证:通行证,
}
让clientsArr=JSON.parse(localStorage.getItem('users');
clientsArr.push(用户数据);
setItem(“用户”,JSON.stringify(clientsArr));
}
saveMe.addEventListener(“单击”,新建数据)您尝试使用下面的代码

参考:


函数clickCounter(){
if(类型(存储)!=“未定义”){
if(localStorage.clickcount){
localStorage.clickcount=2;
localStorage.clickcount=数字(localStorage.clickcount)+1;
}否则{
localStorage.clickcount=1;
}
document.getElementById(“结果”).innerHTML=“您已单击按钮”+localStorage.clickcount+“时间”。”;
}否则{
document.getElementById(“结果”).innerHTML=“对不起,您的浏览器不支持web存储…”;
}
}
点击我

单击按钮查看计数器的增加

关闭浏览器选项卡(或窗口),然后重试,计数器将继续计数(不会重置)


您需要一个唯一的字段来识别用户id(如电子邮件)。 使用此代码,您可以更新现有用户数据(无需电子邮件)

const newEmail=document.getElementById(“电子邮件”);
const newName=document.getElementById(“名称”);
const frm=document.getElementById(“frm”);
frm.addEventListener(“提交”,e=>{
e、 预防默认值();
const email=newEmail.value;
const name=newName.value;
const userData={email,name};
const storage=JSON.parse(localStorage.getItem(“用户”);
如果(!存储){
setItem(“users”,JSON.stringify([userData]);
}否则{
const userIndex=storage.findIndex(el=>el.email==email);
如果(用户索引>=0){
存储[userIndex]=用户数据;
setItem(“用户”,JSON.stringify(存储));
}否则{
存储推送(userData);
setItem(“用户”,JSON.stringify(存储));
}
}
});
电邮:
姓名:
救救我

如果要替换现有用户,您需要知道它对应于
clientsArr
中的哪个条目,然后您可以使用
clientsArr[user\u index]=user\u数据
您的代码片段正在本地存储中将新的
用户\u数据
推送到现有的
用户
中。简单的方法是使用getItem检索本地存储,然后添加值。然后使用localStorage删除密钥。删除('key'),然后使用与您的情况相同的密钥名为“users”的setItem。由于菲律宾的台风,我将在电源恢复后尝试此操作,无论如何,感谢您的回答!同样,我要做的是让设置页面正常工作,设置页面的主要功能是更新您存储的名字、姓氏、电子邮件和密码。如果您使用注册页面保存,我将尝试您的代码!一旦电力恢复
const newEmail = document.getElementById("email");
const newName = document.getElementById("name");
const frm = document.getElementById("frm");

frm.addEventListener("submit", e => {
  e.preventDefault();
  const email = newEmail.value;
  const name = newName.value;
  const userData = { email, name };
  const storage = JSON.parse(localStorage.getItem("users"));

  if (!storage) {
    localStorage.setItem("users", JSON.stringify([userData]));
  } else {
    const userIndex = storage.findIndex(el => el.email === email);
    if (userIndex>=0) {
      storage[userIndex] = userData;
      localStorage.setItem("users", JSON.stringify(storage));
    } else {
      storage.push(userData);
      localStorage.setItem("users", JSON.stringify(storage));
    }
  }
});

  <form id="frm">
    email: <input id="email" type="text" />
   name: <input id="name" type="text" />
    <button type="submit">save me</button>
  </form>