无法从存储在本地存储中的数组中获取表行

时间:2016-11-08 03:03:44

标签: javascript arrays local-storage

我有一个本地存储密钥名"A",其中包含一组表行。当我提醒整个阵列时,它会显示[object HTMLTableRowElement],[object HTMLTableRowElement]

但是,当我遍历数组时,我没有在变量中获取对象,而是仅获得[

如何从数组中正确获取表行对象。

这是我的代码:

  if (localStorage.getItem("A") !== null) {

        var lArray = localStorage.getItem("A");
        alert(lArray);   // alerts [object HTMLTableRowElement],[object HTMLTableRowElement]
        for(var i=0 ; i < lArray.length ; i++)
        {
            alert(lArray[i]);   // alerts [
        }

    }

以下是我将表行放在本地存储中的方法

 var favA = [];
 function addRow()
 {
    var tableRow = document.createElement("TR");
    var trID = "Tr";
    tableRow.setAttribute("id", trID);

    favA.push(tableRow);    

    if (typeof(Storage) !== "undefined") {
        localStorage.setItem("A", favA);

    }

1 个答案:

答案 0 :(得分:0)

您无法在JSON.stringify上使用HTMLElement。使用.outerHTML获取HTML字符串。请记住,这些可能会持续很长时间......

直接使用DocumentFragment&#39; s innerHTML或DOM的innerHTML将字符串解析回元素。

&#13;
&#13;
var mockLocalStorage = (function mock() {
  var store = {};
  
  return {
    getItem: function(k) { return store[k]; },
    setItem: function(k, v) { store[k] = v; }
  }
}());

var myRow = document.querySelector("tr");
var myRowStr = myRow.outerHTML;

// This won't work:
// JSON.stringify(myRow)) // returns "{}"

var toLocalStorage = function() {
   mockLocalStorage.setItem("_test", myRowStr); 
}

var fromLocalStorage = function() {
   document.querySelector("tbody").innerHTML +=
     mockLocalStorage.getItem("_test"); 
  
}

toLocalStorage();
fromLocalStorage();
&#13;
<table>
  <tbody>
    <tr>
      <td>A cell</td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;