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

如何使用LocalStorage计算购物车总价格,修复总金额展示异常问题

问题原因

你写的总价格代码存在几个明显问题:

  • localStorage.getItem('prod_value' + 'prod2_value')逻辑错误:你把两个key拼接成了不存在的字段名prod_valueprod2_value,根本读不到对应的值
  • localStorage取出的值都是字符串类型,即使存的是数字,直接相加会变成字符串拼接,不会做数学求和
  • 同一个#updateCart按钮绑定了三次重复的click监听器,属于冗余代码
  • 如果你的prod_value、prod2_value是商品单价,还需要乘以对应购买数量才能得到正确的单种商品总价

修正后代码

document.querySelector("#updateCart").addEventListener('click', function() {
  // 读取第一个商品信息
  const prodValue = Number(localStorage.getItem("prod_value")) || 0
  const prodQty = Number(localStorage.getItem("prod_qty")) || 0
  const prodSize = localStorage.getItem("prod_size") || ''
  document.querySelector('#prod_value').innerText = prodValue
  document.querySelector('#prod_qty').innerText = prodQty
  document.querySelector('#prod_size').innerText = prodSize

  // 读取第二个商品信息
  const prod2Value = Number(localStorage.getItem("prod2_value")) || 0
  const prod2Qty = Number(localStorage.getItem("prod2_qty")) || 0
  const prod2Size = localStorage.getItem("prod2_size") || ''
  document.querySelector('#prod2_value').innerText = prod2Value
  document.querySelector('#prod2_qty').innerText = prod2Qty
  document.querySelector('#prod2_size').innerText = prod2Size

  // 计算总价格:如果prod_value已经是单商品总价,就去掉 * prodQty 和 * prod2Qty 部分
  const total = prodValue * prodQty + prod2Value * prod2Qty
  document.querySelector('#total').innerText = total
})

补充说明

如果你的prod_value存储的已经是单个商品的总价(提前算好了单价乘数量),只需要把总价格计算的那行改成const total = prodValue + prod2Value即可。代码里加了|| 0的容错处理,避免localStorage没有值的时候出现NaN的异常展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:10