无法从 LocalStorage Jquery 获取数组

Posted

技术标签:

【中文标题】无法从 LocalStorage Jquery 获取数组【英文标题】:Unable to get Array from LocalStorage Jquery 【发布时间】:2021-10-25 05:51:43 【问题描述】:

我创建了一个数组并动态添加列表项,将其保存到localStorage

数组已正确保存在 localStorage 中,但我无法将其取回并将其附加到 DOM。

const arr = [];

var cartItem = $(
  "<li class='newItem'> <p class='id'>1</p> <div class='details'><p class='name'>Orange</p><span class='weight'>20</span><span> /</span> <span class='avail'>In Stock</span> <p class='price'>10</p><a type='button' class='inc'>+</a><input type='text' class='quantity' value='1' ><a type='button' class='dec'>-</a></div> <a type='button' class='removeItem'><i class='fa fa-trash'></i></a></li>"
);
var cartItem2 = $(
  "<li class='newItem'> <p class='id'>2</p> <div class='details'><p class='name'>Orange</p><span class='weight'>20</span><span> /</span> <span class='avail'>In Stock</span> <p class='price'>10</p><a type='button' class='inc'>+</a><input type='text' class='quantity' value='1' ><a type='button' class='dec'>-</a></div> <a type='button' class='removeItem'><i class='fa fa-trash'></i></a></li>"
);

arr.push(cartItem, cartItem2);

localStorage.setItem("cartItem", JSON.stringify(arr));
var data = localStorage.getItem("cartItem");
var updatedData = JSON.parse(data);
$("#temp").append(updatedData);

【问题讨论】:

您能否分享您的 html 以进一步了解该问题 【参考方案1】:

我发现您的代码中存在的问题是:

    使用cartItem2= "&lt;li class 而不是cartItem2= $("&lt;li class,因为数组项在保存到localStorage 时不能是DOM 元素。

检查下面的代码,即使 它在 SO 中抛出错误 sn-p,我检查了我的本地并且 它正在工作正如预期的那样

$(document).ready(function () 
      var arr = [];

      var cartItem =
        "<li class='newItem'> <p class='id'>1</p> <div class='details'><p class='name'>Orange</p><span class='weight'>20</span><span> /</span> <span class='avail'>In Stock</span> <p class='price'>10</p><a type='button' class='inc'>+</a><input type='text' class='quantity' value='1' ><a type='button' class='dec'>-</a></div> <a type='button' class='removeItem'><i class='fa fa-trash'></i></a></li>";
      var cartItem2 =
        "<li class='newItem'> <p class='id'>2</p> <div class='details'><p class='name'>Orange</p><span class='weight'>20</span><span> /</span> <span class='avail'>In Stock</span> <p class='price'>10</p><a type='button' class='inc'>+</a><input type='text' class='quantity' value='1' ><a type='button' class='dec'>-</a></div> <a type='button' class='removeItem'><i class='fa fa-trash'></i></a></li>";
      arr = [cartItem, cartItem2];

      localStorage.setItem("cartItem", JSON.stringify(arr));
      var data = localStorage.getItem("cartItem");
      var updatedData = JSON.parse(data);
      $("#temp").append(updatedData);
    );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul id="temp"></ul>

【讨论】:

以上是关于无法从 LocalStorage Jquery 获取数组的主要内容,如果未能解决你的问题,请参考以下文章

从服务器检索图像,将其存储在 localStorage 中,并显示它

如何将本地存储从 JS 发送到 PHP 文件(?)

无法从 localStorage 检索动态生成的内容

localstorage不刷新无法读取

客户端localStorage命名冲突问题

Chrome 中的 iframe 错误:无法从“窗口”读取“localStorage”:此文档的访问被拒绝