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

如何将列表中激活条目的状态保存到sessionStorage实现状态持久化

实现方案

你这个场景下不需要逐个存储条目的激活状态,因为激活规则是「前total个条目统一激活」,直接存储total数值到sessionStorage即可,实现成本最低,性能也最优。

修改后的完整JS代码如下:

// 初始化时优先从sessionStorage取存储的激活数量,没有就用默认值6
var total = Number(sessionStorage.getItem('case_active_total')) || 6;
var cases = $(".cases__item").length;

// 页面加载时根据total初始化显示状态
$('.cases__item:lt(' + total +')').addClass("active").show();
// 初始化时判断是否要隐藏more按钮
if (total >= cases) {
  $('#morecases').hide();
}

$('#morecases').click(function () {
    total += 3;
    // 更新后立刻存储到sessionStorage
    sessionStorage.setItem('case_active_total', total);
    if (total <= cases) {
      $('.cases__item:lt(' + total + ')').addClass('active').show()
    } else {
      $('.cases__item:lt(' + total + ')').addClass("active").show();
      $('#morecases').hide();
    }
});

扩展说明

如果后续激活规则调整(比如允许用户单独点击条目切换激活状态,不是批量前N个激活),可以用JSON序列化的方式存状态数组:

// 存储状态数组
const activeStatus = $('.cases__item').map((_, item) => $(item).hasClass('active')).get();
sessionStorage.setItem('case_active_status', JSON.stringify(activeStatus));

// 读取状态数组
const savedStatus = JSON.parse(sessionStorage.getItem('case_active_status') || '[]');

你当前的需求用存total数值的方案就完全够用,不需要使用数组存储方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:27:03