Как изменить одно значение внутри элемента localStorage? - PullRequest
3 голосов
/ 26 августа 2011

У меня есть набор элементов, которые сохраняются, но я пытаюсь изменить значение после того, как получу его и перед тем, как передать его в свою функцию php. Можно ли поменять только один элемент?

Моя строка предметов выглядит так:

var args = window.localStorage.getItem("localusers");

start=0&type=1

Я сохраняю элемент localusers следующим образом:

window.localStorage.setItem('localusers', $("#profile_form_id").serialize());

Я пытаюсь установить значение типа 6

Я не могу найти поддерживаемый метод, который позволяет мне получить / установить элемент в массиве, поэтому мне нужно перебрать массив, изменить значение и затем снова установить элемент localusers? Это не очень эффективно, но я не вижу другого пути.

Есть мысли или предложения?

Ответы [ 2 ]

7 голосов
/ 26 августа 2011

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.

1 голос
/ 26 августа 2011

Попробуйте это

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...