«для» повторяется только один раз, когда я хочу читать из локального хранилища - PullRequest
0 голосов
/ 22 июня 2019

Я хочу прочитать все из локального хранилища нажатием кнопки и отобразить его в моем массиве, но цикл for повторяется только один раз

Отправка чего-либо в локальное хранилище:

onClick1() {
    var value = document.getElementById('textfield').value; 
    localStorage.setItem("todoData" + Date.now(),value);  

Получение обратно:

onClick4(){
  for (var j = 0; j < localStorage.length; j++){
    this.todos = [localStorage.getItem(localStorage.key(j))];
    }

Ожидаемые результаты:
Я хочу видеть все, что находится в локальном хранилище

фактические результаты:
Я получаю только один элемент

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Это должно исправить:

Заменить эту строку:

localStorage.setItem("todoData" + Date.now(),value);

этой строкой:

localStorage.setItem("todoData" + Date.now(), JSON.stringify(value));

и вся эта функция:

onClick4() {
  for (var j = 0; j < localStorage.length; j++) {
     this.todos = [localStorage.getItem(localStorage.key(j))];
  }
}

с этой функцией:

onClick4() {
 let tempArray = [];
 for (var i = 0; i < localStorage.length; i++) {
     tempArray.push(JSON.parse(localStorage.getItem(localStorage.key(i))));
 }
 this.todos = tempArray;
}
0 голосов
/ 22 июня 2019

Похоже, что вы устанавливаете список дел на последнее значение, которое цикл повторяет, когда вы делаете это:

onClick4(){
  for (var j = 0; j < localStorage.length; j++){
    this.todos = [localStorage.getItem(localStorage.key(j))];
    }

Вместо этого, возможно, попробуйте объявить задачи как массив размером localStorage.length, а затем добавить каждый элемент в локальном хранилище в этот массив.

onClick4(){
  for (var j = 0; j < localStorage.length; j++){
    this.todos[j] = [localStorage.getItem(localStorage.key(j))];
    }
...