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

localStorage存值正常但向HTML追加数据输出异常如何解决

问题原因&修复方案

你的代码主要存在4处可修正的点:

  • 遍历逻辑冗余:iDataHandler本身是数组,不需要用Object.keys处理,直接按数组下标遍历即可
  • 输出格式错误:你直接将存储数据的对象拼接进HTML,对象默认转为字符串会显示[object Object],就是你遇到的异常输出,需要手动取出对象内的字段拼接
  • 重复渲染问题:每次点击保存都会遍历所有历史数据追加,会导致旧数据重复展示,追加前先清空容器即可解决
  • 属性语法错误:data-postid的属性定义少了等于号,属于语法疏漏

修正后的完整JS代码

$("document").ready(function(){
  var iDataHandler = [];
  
  $(".save").on("click", function() {
    if(typeof(Storage) !== "undefined") {
      if(localStorage.getItem('iDataHandler') && localStorage.getItem('iDataHandler').length > 0) {
        iDataHandler = JSON.parse(localStorage.getItem('iDataHandler'));
      }
      const DataHandler = {
        'title': $("#txtbox-1").val(),
        'para': $("#txtbox-2").val(),
        'para1': $("#txtbox-3").val(),
      };
      
      iDataHandler.push(DataHandler);
      localStorage.setItem('iDataHandler', JSON.stringify(iDataHandler));
    }
    // 追加前先清空容器避免重复
    $(".sNote").empty();
    // 直接遍历数组
    for (var i = 0; i < iDataHandler.length; i++) {
      const item = iDataHandler[i];
      // 手动拼接对象内的字段,修正data-postid语法
      $(".sNote").append(
        `<div class="list-item" data-postid="${i}">
          标题:${item.title},内容1:${item.para},内容2:${item.para1}
        </div>
        <div class="close"><i class="fas fa-times"></i></div>`
      );
    }      
  });
});

直接替换原有JS代码即可正常实现存储+渲染需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:09:04