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

JavaScript实现指定类元素文本数值求和问题求助

解决JavaScript元素文本数值求和的问题

嘿,我来帮你搞定这个求和的问题!咱们先拆解下你原来代码里的问题,再给你靠谱的实现方案。

原代码的核心bug

你一开始把size初始成了空字符串'',这就导致每次执行size += parseInt(...)时,本质是字符串拼接而非数值相加——第一次是'' + 1000得到'1000',第二次是'1000' + 2000得到'10002000',这就是控制台输出字符串的原因。

而你后来尝试的那段代码,因为size已经是字符串'10002000',size[i][1]这种写法完全错误(字符串的索引只能取单个字符,比如size[0]是'1',size[i][1]会返回undefined),所以累加后得到NaN也不奇怪啦。

正确的实现方式

只需要把总和变量初始化为数值类型的0,然后遍历每个元素,把提取到的数字加到总和里就行,还可以加个判断避免无效数字导致的NaN:

$(document).ready(function(){ 
    var elements = document.getElementsByClassName("item-size"); 
    var totalSize = 0; // 关键:初始化为数值0,不是字符串
    for (var i=0; i<elements.length; i++) { 
        // 清理文本中的非数字/小数点,转成整数
        var num = parseInt((elements[i].innerText).replace(/[^0-9.]/g, ""), 10);
        // 确保是有效数字再累加
        if (!isNaN(num)) {
            totalSize += num;
        }
    } 
    console.log(totalSize); // 现在会输出3000啦!
});

更简洁的jQuery写法

如果你已经在用jQuery,也可以用each()方法遍历,代码更清爽:

$(document).ready(function(){ 
    var totalSize = 0;
    $('.item-size').each(function() {
        var num = parseInt($(this).text().replace(/[^0-9.]/g, ""), 10);
        if (!isNaN(num)) {
            totalSize += num;
        }
    });
    console.log(totalSize);
});

这样就能完美得到你想要的数值求和结果3000了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:19