Хранит некоторые поля в локальном хранилище

#javascript #cordova

#javascript #кордова

Вопрос:

Я хочу сохранить каждое созданное поле в localStorage, чтобы получить идентификаторы для последующего использования.

Это приложение cordova.

Я создаю поле с помощью javascript. Внешний DIV, поле ввода и кнопка. Это поле ввода и кнопка должны быть сохранены в localStorage для последующего использования.

Я сохранил идентификатор группы div, идентификатор поля ввода и идентификатор кнопки в localStorage. Я не знаю, является ли это лучшим решением, но если нет, то я был бы признателен за некоторые указания.

Вот как я его храню:

 localStorage.setItem('inputGroup', 'input_area_group_'   id   '');
localStorage.setItem('inputField', 'input_field_'   id   '')
localStorage.setItem('delButton', 'delBtn_'   id   '');
 

Теперь.

Это первый раз, когда я использую localStorage, поэтому я не имею большого понятия об этом, но, по крайней мере, я пытаюсь.

Когда я сохраняю эти 3 значения в локальном хранилище и создаю другое поле с теми же значениями. Будут ли они затем перезаписывать другие результаты или будет массив со всеми результатами в f.eks «inputGroup»? Например, если у меня 40 полей, я хотел бы иметь 40 значений в «inputGroup» локального хранилища.

Это потому, что, когда я создал эти поля, я хотел бы удалить одно из них, если захочу. И затем я подумал, что могу получить идентификатор в localstorage, который соответствует идентификатору кнопки, которую я нажал.

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

Комментарии:

1. Я использую что-то под названием jsql для долгосрочного хранения базы данных в приложениях Cordova, которые я поддерживаю для работы.

2. Возможно, вы ошибаетесь в этом. Если ваши поля, группы и кнопки точно такие же, и единственное, что меняется, это идентификатор, тогда используйте класс с прослушивателем щелчков на вашей кнопке удаления. Когда вы нажимаете кнопку удаления, она удаляет относительный контейнер на основе нажатой вами кнопки. Для этого вам не нужно сохранять каждое уникальное имя идентификатора каждого поля, группы или кнопки, даже если вы используете автономное приложение. Смотрите мой краткий пример: jsfiddle.net/p3zjdu0g

3. Спасибо за это JM-AGMS. Это означает, что я сделал это правильно в первый раз, когда попробовал. Проблема сейчас в том, что мой код работает в JSFiddle, но не в моем приложении Cordova. Это результат моего HTML-кода и JS, с которым я работаю: jsfiddle.net/uLm73new/4

4. Это работает, но, похоже, будет проблемой заставить его работать на Кордове. Я бы порекомендовал вам открыть консоль в вашем приложении Cordova и посмотреть, есть ли там какие-либо ошибки. Если вы все еще не можете понять это, задайте новый вопрос. Желаю удачи.

Ответ №1:

localStorage — это словарь, поэтому первая часть (ключ) уникальна. Вторая часть, значение, привязана к ключу. Изменение части значения приведет к замене, а не к добавлению новой. Вместо этого вы могли бы изменить значение ключа, если бы захотели.

Или вы можете сохранить значение в виде строки с разделителями, каждый раз объединяя новую строку. (Однако конкатенация, как правило, является медленной операцией). В этом случае вы можете взять объединенную строку и преобразовать ее в массив JavaScript.

Комментарии:

1. Хорошо. Мое понимание JavaScript составляет около 30%, поэтому я постараюсь это понять. Итак, что вы считаете лучшим решением, так это то, что каждый раз, когда я создаю новый «div» с помощью ввода и кнопки, я должен помещать это в массив, а затем сохранять массив в localStorage, поскольку значение заменяется. Итак, если он хранится в массиве, а массив хранится в localstorage, тогда у меня всегда будут мои идентификаторы?

2. если вы храните массив в localstorage, вам нужно упорядочивать его каждый раз, когда вы что-то храните, и декодировать его каждый раз, когда вы извлекаете что-то из него. непонятно, почему вы вообще используете localstorage .. похоже, вы просто используете для передачи значений, а это не то, для чего предназначен localstorage.

3. Я просто экспериментирую, создавая автономное приложение, которое может хранить несколько значений. Не более 10. Локальное хранилище будет содержать только идентификаторы этих 10 разделов, а затем удалять их на более позднем этапе. Если это не лучшее решение, то я всегда открыт для указателей.