Я не смог переместить объект person в массив, который хранится в локальном хранилище, ошибка (Не удается прочитать свойства null (чтение «push»))

#javascript

#язык JavaScript

Вопрос:

 lt;p class="center" gt;  name:lt;brgt; lt;input type="text" id="nameinput" requiredgt;lt;brgt;  email:lt;brgt;lt;input type="email" id="emailinput" requiredgt;lt;brgt;  password:lt;brgt;lt;input type="password" id="passwordinput" requiredgt;lt;brgt;  lt;button id="registerbutton" onclick="co`enter code here`ntainsObject()"gt;Registerlt;buttongt;  lt;pgt;lt;brgt;lt;p id="feedback"gt;lt;/pgt;lt;brgt;  lt;button onclick="clearStorage()"gt;Clear Storagelt;/buttongt;    lt;body id="body"gt;  lt;scriptgt;  var userArray = [];  var person = {};  var newemail;  var oldemail;  var feedback = document.getElementById("feedback");  person.name = document.getElementById("nameinput").value;  person.email = document.getElementById("emailinput").value;  person.password = document.getElementById("passwordinput").value;  JSON.parse(localStorage.getItem(userArray));    function containsObject(newemail, userArray) {  newemail = document.getElementById("emailinput").value;    oldemail = localStorage.email;    if (newemail === oldemail) {  feedback.innerHTML = "email exist";  } else {  storeName();  }  }      function storeName(person, userArray) {      let newarray = JSON.parse(localStorage.getItem(userArray));  newarray.push(person);  userArray = newarray;  localStorage.setItem("person", JSON.stringify(userArray));  console.log(userArray);  }  

Комментарии:

1. Так что же делать, если ваш элемент локального хранилища еще не существует? Тогда это будет не массив , но null , и метод null.push не существует, отсюда и ошибка. В этом случае вы должны проверить это и инициализировать его пустым массивом.

Ответ №1:

Привет, Мохаммед, при использовании локального хранилища вы всегда должны сначала инициализировать значение, прежде чем изменять его. Вот пример : Инициализация :

 localStorage.setItem('user1', 'Mohammed'); 

Затем вы можете запросить локальное хранилище, чтобы получить значение :

 localStorage.getItem('user1') 

Или вы можете перезаписать его значение :

 localStorage.setItem('user1','Jip') 

Важно знать, что и ключ, и назначенное ему значение должны быть строками. Поэтому, когда вы хотите сохранить и инициализировать массив пользователей, массив должен храниться в виде строки. Чтобы повторить процесс для вашего варианта использования : Инициализация :

 localStorage.setItem('users',"[]") 

Чтение :

 localStorage.getItem('users') 

Изменение его стоимости :

 let users = JSON.parse(localStorage.getItem('users')) users.push('Jip') users = JSON.stringify(users) localStorage.setItem('users',users) 

Я надеюсь, что это то, что вам было нужно.