2014-01-23 55 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);