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

JavaScript如何对class为money的HTML元素数值求和避免字符串拼接

问题根因
  • toFixed() 方法返回值为字符串类型,JS中数值和字符串执行+=运算时,会自动将数值转为字符串后做拼接,而非你期望的数值加法,这就是最终结果是数字拼接的核心原因。
  • 你代码中声明的arr变量未参与任何逻辑,属于冗余变量,可以直接删除,用elements.length作为循环终止判断条件即可。
解决方案

推荐在累加阶段全部使用数值类型运算,最终输出时再统一做小数位格式化,避免中间多次类型转换和精度损失,修正后代码如下:

var elements = document.getElementsByClassName("money");
var total = 0;

for (var i = 0; i < elements.length; i++){
    var val = elements[i].innerHTML;
    // 仅做数值累加,不做格式化
    total += parseFloat(val);
}
// 最终结果统一保留2位小数
total = total.toFixed(2);
console.log(total);

如果确实需要每一步累加都强制保留两位小数,可以将toFixed的结果强制转为数值类型后再累加(不推荐,高频运算场景下容易出现浮点精度误差):

total += Number(parseFloat(val).toFixed(2));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:24:03