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

如何实现计数器存储于localStorage,点击按钮在UI显示且刷新不丢失

基于localStorage的计数器实现修正

需求:创建一个存储在localStorage的计数器,点击保存按钮时将计数器值显示在UI,页面刷新后数值仍能保留。

原代码存在的问题

  • 初始页面加载时,未将localStorage中存储的计数器值同步到UI,刷新后UI为空
  • localStorage存储的是字符串类型,直接用|| 0会导致后续加减操作变成字符串拼接(比如"0"+1变成"01")
  • 保存函数存在注释语法错误,逻辑不够清晰

修正后的代码

const plusBtn = document.querySelector('.plus-btn');
const minusBtn = document.querySelector('.minus-btn');
const saveBtn = document.querySelector('.save-btn');
const span = document.querySelector('.span');

// 初始化计数器:从localStorage取值并转为数字,默认值0
let counter = parseInt(localStorage.getItem('counter')) || 0;
// 页面加载时立即同步到UI
span.innerText = counter;

// 绑定事件监听
plusBtn.addEventListener('click', plus);
minusBtn.addEventListener('click', minus);
saveBtn.addEventListener('click', saveCount);

// 加操作:更新计数器并同步到UI
function plus() {
    counter++;
    span.innerText = counter;
};

// 减操作:更新计数器并同步到UI(可选限制最小值)
function minus() {
    if (counter > 0) {
        counter--;
        span.innerText = counter;
    }
};

// 保存操作:将当前计数器值持久化到localStorage
function saveCount() {
    localStorage.setItem('counter', counter);
}

核心要点

  • 用parseInt转换localStorage的字符串值为数字,避免字符串拼接错误
  • 页面初始化时直接把计数器值同步到UI,确保刷新后能显示历史数据
  • 加减操作仅更新内存中的计数器和UI,点击保存才完成持久化,匹配需求逻辑
  • 减操作中增加的最小值限制可根据实际需求移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:26