2010-05-14 3 views
3

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

Например:

function save() 
{ 
    var inputfield = document.getElementById('field').innerHTML; 
    localStorage['justified'] = inputfield; 
} 

<input type="text" id="field" onclick="save();" /> 

Каждый раз, когда кто-то вводит что-то в поле ввода и нажмите сохранить, то LocalStorage сохранит значение только в том же имени, однако, делает этот конфликт хранение пути сохраняется , подобно замене на последнее значение ввода?

Кроме того, существует ли способ предотвратить очистку локального хранилища при очистке кеша?

ответ

1

Это очень легко определить с помощью очень простой тестовой страницы. Вы можете хранить только одно значение для каждой клавиши, а значения не очищаются при очистке кеша. (Я просто попытался Firefox до сих пор ...)

Вы можете сохранить список значений в одном ключе, написав свою собственную функцию, чтобы сделать это:

function addToPersistentList(listName, value) { 
    var val = localStorage[listName] || []; 
    val.push(value); 
    localStorage[listName] = val; // THIS DOES NOT WORK 
} 

Редактировать К сожалению это только поддерживает сохраненные строки; дерьмо. Хорошо также, если у вас есть json2 вы могли бы сделать это:

function addToPersistentList(listName, value) { 
    var val = localStorage[listName] ? JSON.parse(localStorage[listName]) : []; 
    val.push(value.toString()); 
    localStorage[listName] = JSON.stringify(val); 
} 

Конечно, это вызывает проблемы, если вы хотите хранить даты и т.д.

+0

Пробный Chrome, очищающий кеш не очищает данные. Но очистка файлов cookie «.. и других данных браузера» очищает его. – JeroenEijkhof

0

No. Вы можете хранить только одно значение в записи LocalStorage.

Есть два способа сохранить больше значений за одно ключевое слово:

  1. Использование localStorage['justified_0'], localStorage['justified_1'] Etcetera.
  2. Храните несколько значений в массиве и преобразуйте их в JSON перед сохранением в localStorage['justified'] и преобразуйте их обратно в массив после чтения.

Очистка кеша не очищает локальное хранилище.

7

Фактически localStorage «должен» быть способен хранить целые числа, строки и массивы. Я работаю над приложением блокнота с помощью LocalStorage и сохранить все свои данные с помощью литералов объектов:

var someData = { 
    withvars: "and values", 
    init: function() { 
     // not sure if this works but it should. 
    }, 
    var1: { 
     subvar1: "data", 
     subvar2: "data2" 
    } 
}; 

Затем сохранить его с помощью JSON.stringify():

localStorage.setItem(varName, JSON.stringify(someData)); 

Тогда доступ к нему позже с JSON. разобрать():

var dataBack = JSON.parse(localStorage.getItem("varName")); 

Если вы всегда использовать литералы объектов, то у вас будет меньше проблем отслеживания о том, как хранить и как извлекать данные из LocalStorage.

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