2014-01-23 53 views
0

我是一个JavaScript/Jquery的初学者,我正在制作一个使用jquery mobile和jquery的移动web应用程序,我无法弄清楚如何在一个地方显示我的所有输入。无论我输入多少数据,它总是显示最后输入的内容。请帮助吗?如何在本地保存javascript变量?

$(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>'); 
    }); 
+1

你应该准备一个小提琴,反正我觉得你在你的第一个'if'声明已经错误'如果(localStorage的[ 'linrval'],localStorage的[ 'linrdate'])' - 检查您的js控制台 – fcalderan

+0

单击按钮或加载页面时出现问题吗? –

+0

您的localstorage ** getItem **在哪里? –

回答

0

几件事情需要在这里每一个需要添加到阵列的时间,而不是改变你用相同的属性更新项目值。 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

0

你有这样的:当且仅当localStorage['linrdate']是真的

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

这样的表达式为true。基本上忽略了localStorage['linrval']的值。

也许你想这样的:

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

你也覆盖你的localStorage值:

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