Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.01.2019, 19:47
Интересующийся
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 26

Дописать в localStorage
В localStorage есть ключ label со значением. Как дописать к этому же значению?

Неработающая реализация:
var _local = {}; // создаём массив

_local = JSON.parse(localStorage.getItem('label')); // записываем в массив существующие данные из localStorage
_local.push(label); // тут не работает - _local.push is not a function
localStorage.setItem('label', JSON.stringify(_local)); // записываем значения массива обратно в localStorage

Заранее благодарю за помощь
Ответить с цитированием
  #2 (permalink)  
Старый 13.01.2019, 20:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,531

var _local = []; // создаём массив
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2019, 20:20
Интересующийся
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
var _local = []; // создаём массив
Спасибо. Но всё равно не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2019, 20:28
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,031

может так
var _local = JSON.parse(localStorage.label || "[]");
_local.push(label);
localStorage.label = JSON.stringify(_local);

и переменная label должна быть объявлена!

Если всё-равно не работает, то выполните в консоли браузера
localStorage.label = "[]"

Последний раз редактировалось Malleys, 13.01.2019 в 20:31.
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2019, 20:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,315

CryNet,
var _local = JSON.parse(localStorage.getItem('label')||'[]');
_local.push(label);
localStorage.setItem('label', JSON.stringify(_local));
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2019, 20:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,531

Сообщение от CryNet
всё равно не работает
Это исключает ошибку вот тут - _local.push(label); // тут не работает - _local.push is not a function

А что вы дальше хотите, зачем объявлять массив _local, после чего выполнять _local = JSON.parse(localStorage.getItem('label'));, это за гранью моего понимания. ) Может просто словами объяснить - что есть, чего хочется, и т.д.?
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2019, 20:33
Интересующийся
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 26

Сообщение от Malleys Посмотреть сообщение
и переменная label должна быть объявлена!
Она объявлена выше:
var label = document.getElementById('setLabel').value;
Ответить с цитированием
  #8 (permalink)  
Старый 13.01.2019, 20:42
Интересующийся
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Это исключает ошибку вот тут - _local.push(label); // тут не работает - _local.push is not a function

А что вы дальше хотите, зачем объявлять массив _local, после чего выполнять _local = JSON.parse(localStorage.getItem('label'));, это за гранью моего понимания. ) Может просто словами объяснить - что есть, чего хочется, и т.д.?
Основная задача - дописать данные в localStorage к уже существующим - используется один и тот же ключ. Я читал, что так просто дописать нельзя. Поэтому я:
  1. Создал массив _local;
  2. Записал в массив данные из localStorage преобразовав их: _local = JSON.parse(localStorage.getItem('label'));
  3. Дальше нужно дописать в созданный в п.1 массив: _local.push(label); - но тут не робить у меня
  4. А после хочу перезаписать данные в localStorage в том же ключе.

Идею взял отсюда: stackoverflow

Может есть адекватней решение, я не знаю
Ответить с цитированием
  #9 (permalink)  
Старый 13.01.2019, 20:44
Интересующийся
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 26

Сообщение от рони Посмотреть сообщение
CryNet,
var _local = JSON.parse(localStorage.getItem('label')||'[]');
_local.push(label);
localStorage.setItem('label', JSON.stringify(_local));
Ошибка осталась
Ответить с цитированием
  #10 (permalink)  
Старый 13.01.2019, 20:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,531

Сообщение от CryNet
Может есть адекватней решение, я не знаю
https://javascript.ru/forum/501957-post5.html , коли дописывать и хранить в массиве.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
localstorage service script ExXxTaSy Общие вопросы Javascript 15 27.01.2017 11:49
LocalStorage удаление данных neon_tmn Общие вопросы Javascript 8 21.10.2016 15:22
После добавления localstorage в backbone модель, POST запрос ничего не возвращает aphex Общие вопросы Javascript 0 03.12.2013 13:26
Обход элементов localStorage berserk10 Events/DOM/Window 8 11.08.2013 13:55
Не сохраняется localStorage после перезагрузки браузера Бобр Firefox/Mozilla 1 20.10.2011 19:31