2016-03-04 82 views
2

我對下面的代碼無法從對象數組中檢索數據?

function BindData() { 
     var employee = localStorage.getItem("employee"); 
     for (var key in employee) { 
      alert(key); 

      var tr = CreateElement('tr', null) 
      tr.append(CreateElement('td', employee[key])); 
      $('#tblData').append(tr); 
     } 
    } 

key節約下面的代碼

var employeeArray = []; 
function SaveData() { 
     counter = counter + 1; 
     employeeArray.push 
     ({ 
      ID : counter, 
      FirstName : $('#txtFirstName').val(), 
      LastName : $('#txtLastName').val(), 
      MobileNo : $('#txtMobileNo').val(), 
      Address : $('#txtAddress').val() 
     }) 
     localStorage.setItem("employee", employeeArray); 
     BindData(); 
    } 

,當我取回從本地存儲的數據在本地storage.by對象的名單給我只索引看重像0, 1,2 ....我正在尋找要使用的財產的名稱,如key.ID

怎樣才能實現?

+0

localStorage只能理解字符串。您應該在set上對結構進行串聯並在get上進行解碼。 – georg

回答

4

在存儲API,該值存儲爲字符串值,所以你需要存儲

localStorage.setItem("employee", JSON.stringify(employeeArray)); 

然後在閱讀之前的employeeArray轉換成JSON字符串,您需要將字符串轉換回如

function BindData() { 
    var employee = JSON.parse(localStorage.getItem("employee")); 
    employee.forEach(function(emp) { 
    var tr = CreateElement('tr', null) 
    tr.append(CreateElement('td', emp.FirstName)); 
    $('#tblData').append(tr); 
    }) 
} 
+0

謝謝@Arun我不知道字符串值。我可以使用任何其他循環比.foreach檢索屬性值 – ankur

+0

您可以使用任何for循環,爲'$ .each()' –