我有一个本地存储密钥名"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);
}
答案 0 :(得分:0)
您无法在JSON.stringify
上使用HTMLElement
。使用.outerHTML
获取HTML字符串。请记住,这些可能会持续很长时间......
直接使用DocumentFragment
&#39; s innerHTML
或DOM的innerHTML将字符串解析回元素。
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;