如何阻止库存倒计时在页面刷新时重置?
解决库存计数器页面刷新重置问题
你的核心问题是没有正确利用localStorage读取和保存库存值,且代码执行顺序错误,导致localStorage的逻辑完全未生效。以下是修正后的完整代码及关键改动说明:
修正后的代码
<span class="qty" id="qty"></span> <script> var qtyId = document.getElementById("qty"); // 优先从localStorage读取库存,不存在则使用初始值57 var qty = localStorage.getItem('saved_qty') ? parseInt(localStorage.getItem('saved_qty')) : 57; setQty(qty); function setQty(qty) { qtyId.innerHTML = qty; // 每次更新库存后,将当前值存入localStorage localStorage.setItem('saved_qty', qty); if (qty === 0) return; var parts = Math.floor((Math.random() * 3) + 1); if (parts > qty) parts = qty; var msec = Math.floor(((Math.random() * 15) + 15)*1000); qty -= parts; setTimeout(function() { setQty(qty); }, msec) } </script>
关键改动说明
- 调整执行顺序:先读取localStorage再初始化计数器,确保刷新页面时优先加载保存的库存值
- 实时保存状态:每次更新页面显示的库存后,立即将当前值存入localStorage,保证下次刷新能获取最新状态
- 类型转换处理:localStorage存储的是字符串,读取时用
parseInt转为数字,避免后续计算出错 - 移除无效逻辑:删除你代码中未定义的
new_countdown等无效变量和逻辑
现在刷新页面,计数器会从上次停止的数值继续递减,不会再重置为初始值57。
内容的提问来源于stack exchange,提问作者Virgílio Dornelas
相关产品推荐
相关产品推荐

