HTML5 LocalStorage с более чем двумя значениями - PullRequest
2 голосов
/ 20 января 2012

Я хочу создать приложение в стиле списка контактов, которое сохраняет контактную информацию на компьютере пользователя, используя эту функцию LocalStorage.

Теперь у меня проблема в том, что, насколько я могу судить, вы можете хранить только два значения для каждой записи; имя и значение.

Я немного растерялся, так как не могу придумать, как обойти это. Какие-либо предложения? Я надеюсь сохранить около 4/5 полей информации для данной записи.

С уважением, Джек Хант

Ответы [ 4 ]

5 голосов
/ 20 января 2012

Рассмотрите возможность сохранения коллекции каждого типа данных в отдельном ключевом поле в виде JSON в формате String

// myCollection contains three objects, filled with custom type data, in array
var myCollection = [{},{},{}]
function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
localStorage['first_collection'] = JSON.stringify(myCollection, replacer);

И если вам интересно, почему существует эта функция replacer, взгляните на первую ссылку ниже.
Это рекомендуемый способ сделать что-то напрямую: json.org

http://www.json.org/js.html
JSON для строковой переменной dump
JSON для строки в прототипе
https://developer.mozilla.org/en/JSON
http://api.jquery.com/jQuery.parseJSON/

0 голосов
/ 20 июля 2017
For Example we Have Two Input Element name and email, ok then we have to store key and value pair

var name = document.getElementById ('demo1'). Value;

var email = document.getElementById ('demo2'). Value;

localStorage.setItem ( "имя", название);

localStorage.setItem ( "электронная почта", электронная почта);

0 голосов
/ 20 января 2012

Я делал это раньше, я не знаю, грязно ли это, но у меня это работает.Я переписал прототип Storage, чтобы я мог хранить объекты.

Сначала я "сохраняю" исходные методы:

Storage.prototype._setItem = Storage.prototype.setItem;
Storage.prototype._getItem = Storage.prototype.getItem;

А затем переписываю новые:

Storage.prototype.setItem = function(key, object){
    if(typeof object == 'object'){
        this._setItem(key, JSON.stringify(object));
    }
    else{
        this._setItem(key, object);
    }
} 
Storage.prototype.getItem = function(key){
    var val = this._getItem(key);
    try{
        val = JSON.parse(val);
    }catch(e){}
    return val;
}

Имея это, вы можете использовать его как:

localStorage.setItem('test', {value: 1}); // or localStorage.setItem('test', '{value: 1}')
localStorage.setItem('test2', [3,2,1]); // or localStorage.setItem('test2', '[3,2,1]');
localStorage.setItem('test3', '{no object stuff');

И получать те же данные с помощью getItem

localStorage.getItem('test');  // Object: {value: 1}
localStorage.getItem('test2'); // Array: [3,2,1]
localStorage.getItem('test3'); // String: '{no object stuff'
0 голосов
/ 20 января 2012

Вы можете сохранить данные в LocalStorage как объект JSON.КЛЮЧ может быть чем-то вроде «людей», а ЗНАЧЕНИЕ может быть массивом «людей» объектов.Любой тип CRUD будет встречаться в javascript, а LocalStorage будет использоваться только как постоянный носитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...