求和Javascript变量(实际上是字符串)

Sum Javascript variables (strings, actually)

本文关键字:字符串 实际上 Javascript 变量 求和      更新时间:2023-09-26

我有三个包含数字的div

<div class="a">10</div> 
<div class="b">20</div>
<div class="c">30</div>

我用jQuery .html()得到每个里面的数字。

var val_1 = $('.a').html(), 
    val_2 = $('.b').html(),
    val_3 = $('.c').html();

我该如何对它们求和?

这不会按预期工作:

var total = val_1 + val_2 + val_3;

自从返回 102030,当时我预计 60。

首先,由于您只需要div 的内容,因此最好使用 $('.x').text() 而不是 $('.x').html()

现在发生的事情是你正在添加字符串,即连接它们:'1' + '2' + '3soleil' === '123soleil' .

你想把它们解析成数字,这是用

Number(val1) + Number(val2) + Number(val3)

如果你知道它们是整数,你可以更安全地使用Number.parseInt(val, 10)(该函数的第二个变量,称为基数,是你的数字的数学基数。它很可能是十进制数 (10),但也可能是十六进制数 (16)、布尔数 (2) 等

jsFiddle Demo

您可以对它们进行分组,使用每个进行迭代,并汇总它们的 parseInt 数量

var val = 0;
$('.a, .b, .c').each(function(){
 val += parseInt(this.innerHTML,10);
});
alert(val);

使用parseInt,因为您的div内容被评估为字符串:

var val_1 = parseInt($('.a').html(),10), 
    val_2 = parseInt($('.b').html(),10),
    val_3 = parseInt($('.c').html(),10);

在每个变量上使用parseInt();现在它将它们视为字符串并将它们连接起来。

你需要使用 parseInt() 将从 .html() 返回的字符串值解析为 int。

var val_1 = parseInt($('.a').html())

如果您不想键入 (var + var),则可以执行以下操作。

首先,代码中的问题是您的变量被解释为字符串,我们可以强制使用 INT 数据类型,例如。

val_1 = parseInt($('.a').html()), 
val_2 = parseInt($('.b').html()),
val_3 = parseInt($('.c').html());
然后

我们将变量聚合成一个整洁的数组,然后执行 .reduce() 函数,这是一个求和函数。

var aggregate = array(val_1, val_2, val_3);
aggregate.reduce(function(a,b){return a + b})