2016-04-18 1 views
0

У меня есть корзина для покупок, использующая sessionstorage для хранения предметов. Когда пользователь нажимает «добавить в корзину», он сохраняет новый объект с ключом, равным клику, и значением, равным имени элемента. Затем я использую этот цикл для считывания значений:Как улучшить эту систему присвоения имен sessionStorage/for loop?

for (var i = 0; i < sessionStorage.length -1; i++) { 
if(sessionStorage.getItem(i + 1) != null) { 
... 
"<span class='item'>" + sessionStorage.getItem(i + 1) + "</span>" + 

В этом проблема. Скажем, я удаляю элемент 3 из 5 из моей корзины. Если я добавлю еще один элемент, он будет называться «6», но мои предметы будут 1, 2, 4, 5, 6. Мой цикл будет распознавать только пункты 1, 2, 4 и 5. Как узнать элемент 6 ? Я сделал быстрое исправление, проверив мой цикл до 50, но это просто кажется неаккуратным и болотом ресурсов ...

+1

Это может быть полезно вам: http://stackoverflow.com/questions/3357553/how-to-store-an-array-in-localstorage –

+0

@EvanTrimboli Спасибо, это полезно, но, к сожалению, это может потребоваться некоторое время, чтобы преобразовать мой путь к методу с JSON, и у меня заканчивается время. Возможно, в следующий раз я сделаю такое решение. –

ответ

1

Ну, технически a для каждого цикла решит вашу проблему;

for (var e in sessionStorage) { 
    document.write(e + '=>' + sessionStorage[e]); 
} 

Однако неважно, как вы получаете доступ к своим элементам, используя sessionStorage таким образом, это плохой выбор дизайна. Прежде всего, поскольку sessionStorage является общим ресурсом по разным сценариям на одной странице, любой другой скрипт (например, библиотека, которую вы можете использовать) может добавить что-то в sessionStorage, и ваш скрипт запутался. Инкапсуляция ваших данных, например, их сериализация с помощью JSON и включение в sessionStorage уникального ключа к вашему скрипту, помогут вам в долгосрочной перспективе.

+0

Я понимаю сериализацию с JSON и даю ему уникальный ключ ... но я не понимаю «уникальный ключ к вашему скрипту». Есть ли способ специально отобразить sessionStorage для определенных файлов сценариев? –

+0

То, что я имел в виду, было иметь ключ, который не будет сталкиваться ни с чем легко, как 'sessionStorage ['__ productName_Cart'] = ...'. Нет такой вещи, которая специально отображает ключ для определенных файлов сценариев. Каждый файл сценария, загружаемый как часть страницы, может видеть каждый ключ в хранилище сеансов этой страницы. – regulus

+0

Я вижу. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^