You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JQuery无法从LocalStorage读取存储数组并追加到DOM的问题

问题根因

localStorage 仅支持存储字符串类型数据,你直接将jQuery封装的DOM对象存入数组做JSON序列化时,JSON无法正确识别并序列化DOM对象的完整结构,最终序列化得到的只有无实际内容的空对象,取出后自然无法正常追加到DOM中渲染。

解决方案

存储阶段不要直接存jQuery生成的DOM对象,改为存储对应的HTML字符串即可,读取后可直接拼接渲染。

修正后完整代码

const arr = [];
// 直接存原始HTML字符串,不提前转为jQuery对象
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
localStorage.setItem("cartItem", JSON.stringify(arr));

// 读取并渲染
var data = localStorage.getItem("cartItem");
var updatedData = JSON.parse(data);
// 拼接所有HTML字符串后一次性追加,性能更高
$("#temp").append(updatedData.join(''));

兼容场景处理

如果你已经提前生成了jQuery对象,可以调用prop('outerHTML')方法获取对应的HTML字符串再存入数组:

// 已有jQuery对象时的存入方式
arr.push(cartItem.prop('outerHTML'), cartItem2.prop('outerHTML'));

内容的提问来源于stack exchange,提问作者Safina Siddique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:54:02