【问题标题】:Pushing object in localStorage在 localStorage 中推送对象
【发布时间】:2018-07-07 08:20:52
【问题描述】:

首先,请不要试图理解我为什么要尝试将密码保存在 localStorage 中,我只是想知道是否可能。

所以,我有一个注册表单,如果 localStorage 是明确的 - 我将对象保存在 localStorage 中。如果一个对象已经在 localStorage 中,我想获取这个对象,将它们推送到数组中,然后将全新的对象推送到这个数组中。然后在 localStorage 中设置这个 Array。

const registrationForm = document.getElementById('registration');
   registrationForm.addEventListener('submit', e => {
      e.preventDefault();
      let regName = document.querySelector(".registration__name").value;
      let regPassword = document.querySelector(".registration__password").value;
      let regEmail = document.querySelector(".registration__email").value;
      let clientObj = {
         name : regName,
         password: regPassword,
         email: regEmail
      };
      let clientsArr = [];
      clientsArr = JSON.parse(localStorage.getItem('Користувачі'));
      if(!clientsArr) {
         localStorage.setItem('Users', JSON.stringify(clientObj));
      } else {
         clientsArr.push(clientObj);
         localStorage.setItem('Users', JSON.stringify(clientsArr));
      }
   })

这可能吗?使用这段代码,每次我创建新数组,并一次又一次地将其推送到数组中......

【问题讨论】:

  • 您正在阅读 Користувачі 并正在编写 Users....

标签: javascript arrays local-storage javascript-objects saving-data


【解决方案1】:

您应该始终将 localStorage 设置为数组:

   let clientsArr =  JSON.parse(localStorage.getItem('users')) || [];
   clientsArr.push(clientObj);
   localStorage.setItem('users', JSON.stringify(clientsArr));

【讨论】:

  • 谢谢@jonas,它有效
【解决方案2】:

试试下面的

const registrationForm = document.getElementById('registration');
   registrationForm.addEventListener('submit', e => {
      e.preventDefault();
      let regName = document.querySelector(".registration__name").value;
      let regPassword = document.querySelector(".registration__password").value;
      let regEmail = document.querySelector(".registration__email").value;
      let clientObj = {
         name : regName,
         password: regPassword,
         email: regEmail
      };
      let clientsArr = [];
      if(!localStorage.getItem('Users')) {
         clientsArr.push(clientObj);
         localStorage.setItem('Users', JSON.stringify(clientsArr));
      } else {
         clientsArr = JSON.parse(localStorage.getItem('Users'));
         clientsArr.push(clientObj);
         localStorage.setItem('Users', JSON.stringify(clientsArr));
      }
   })

【讨论】:

  • 你能详细说明一下你做了什么改变吗?
  • 他正在访问不同的本地存储值并将数据添加到另一个本地存储值
  • 它不起作用,因为当代码 clientsArr = JSON.parse(localStorage.getItem('Users')); 存在时,`typeof clientsArr === objec't。所以我不能clientsArr.push()
  • 把 if 条件改成这个 if(!localStorage.getItem('Users')) { clientsArr.push(clientObj); localStorage.setItem('用户', JSON.stringify(clientsArr)); }
猜你喜欢
  • 2014-01-23
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2022-06-25
  • 2021-07-19
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
相关资源
最近更新 更多