У меня есть набор сохраняемых элементов, но я пытаюсь изменить значение после его извлечения и до того, как передать его своей функции php. Можно ли поменять только один элемент?
Моя цепочка предметов выглядит так:
var args = window.localStorage.getItem("localusers");
start=0&type=1
Я сохраняю элемент localusers так:
window.localStorage.setItem('localusers', $("#profile_form_id").serialize());
Я пытаюсь установить значение типа на 6
Я не могу найти поддерживаемый метод, который позволяет мне получить / установить элемент в массиве, поэтому мне нужно выполнить итерацию по массиву, изменить значение, а затем снова установить элемент localusers? Это кажется не очень эффективным, но я не вижу другого пути.
Есть мысли или предложения?
2 ответа
localstorage
не возвращает массив или объект. Он может хранить только строку.
Люди обходят это стороной: JSON.stringify()
массив / объект перед передачей в setItem
. Затем, извлекая его с помощью getItem()
, вы запускаете JSON.parse()
на нем.
Предполагая, что это объект, и вы его проанализировали, вы можете изменить свою переменную args
, прежде чем отправлять ее:
args.type = 6;
Чтобы облегчить все это, вы можете позвонить маленькому помощнику:
var localstorage = {
set: function (key, value) {
window.localStorage.setItem( key, JSON.stringify(value) );
},
get: function (key) {
try {
return JSON.parse( window.localStorage.getItem(key) );
} catch (e) {
return null;
}
}
};
Если вы включите этот сценарий, вы сможете затем устанавливать и получать элементы через localstorage.get
и localstorage.set
, и он автоматически преобразует их в JSON и из него.
Попробуй это
var args = window.localStorage.getItem("localusers");
args["type"] = 6;
//Update the localStorage with new value
localStorage.setItem("localusers", JSON.stringify(args));
Как и другие объекты JavaScript
, вы можете рассматривать объект localStorage
как ассоциативный массив. Вместо использования методов getItem()
и setItem()
вы можете просто использовать квадратные скобки.
var args = localStorage["localusers"];
args["type"] = 6;
//Update the localStorage with new value
localStorage["localusers"] = args;
Похожие вопросы
Новые вопросы
jquery
jQuery - это библиотека JavaScript, рассмотрите возможность добавления тега JavaScript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться в рассматриваемом коде, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.