Как сохранить локальные переменные javascript?

121
15

Я новичок в Javascript/Jquery, и я делаю мобильное веб-приложение с помощью jQuery mobile и jquery, и я не могу понять, как отображать все мои входы в одном месте. Независимо от того, сколько данных я вхожу в форму, он всегда отображает последнее введенное. Пожалуйста, любая помощь?

$(document).ready(function() {
if(localStorage['linrval'],localStorage['linrdate']){
$('#inrhist').prepend('<div class="inrval">'+localStorage['linrdate']+ ' ---- ' +localStorage['linrval']+ '</div>');
};

$('#inrbtn').click(function(){
var inrval=$('input[name=user]').val();
var inrdate=$('input[name=dateinr]').val();
localStorage.setItem('linrval',inrval);
localStorage.setItem('linrdate',inrdate);
$('#inrhist').prepend('<div class="inrval">'+inrdate+ ' ---- ' +inrval+ '</div>');
});

спросил(а) 2014-01-23T14:03:00+04:00 6 лет, 8 месяцев назад
1
Решение
57

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

   $(document).ready(function() {

//localStorage.removeItem("users");

var userStr = localStorage.getItem('users');

if (userStr != null && userStr != undefined) {
var jsonObj = JSON.parse(userStr);

console.log("onload value", jsonObj);

$.each(jsonObj.items, function(i, item) {
$('#inrhist').prepend('<div class="inrval">'+item.user +'--'+item.dateinr+'</div>');
});
}

$('#inrbtn').click(function () {

var dataItems = { items: [] };

var inrval = $('input[name=user]').val();
var inrdate = $('input[name=dateinr]').val();

var item = { user: inrval, dateinr: inrdate };

var usersList = localStorage.getItem('users');

var jsonObj;

if (usersList == null) {
dataItems.items.push(item);
jsonObj = JSON.parse(JSON.stringify(dataItems));
}
else {
jsonObj = JSON.parse(usersList);
jsonObj.items.push(item);
}

jsonStr = JSON.stringify(jsonObj);

console.log(jsonStr);

localStorage.setItem("users", jsonStr);

$('#inrhist').prepend('<div class="inrval">' + inrdate + '--' + inrval + '</div>');

});

});

LIVE DEMO

ответил(а) 2014-01-23T15:53:00+04:00 6 лет, 8 месяцев назад
41

У вас есть следующее:

if(localStorage['linrval'],localStorage['linrdate']){...}

Такое выражение истинно тогда и только тогда, когда localStorage['linrdate'] истинно. Значение localStorage['linrval'] в основном игнорируется.

Возможно, вы этого хотите:


if( localStorage['linrval'] || localStorage['linrdate'] ){...}
^^

Вы также перезаписываете значения localStorage:

localStorage.setItem('linrval',inrval);
localStorage.setItem('linrdate',inrdate);

ответил(а) 2014-01-23T14:09:00+04:00 6 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема