Javascript不会对数字求和

时间:2014-06-11 14:52:25

标签: javascript jquery string sum

我使用javascript / jquery不好,所以这是一个愚蠢的问题! 我编码了这个

    <li>
        <a href="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg"><img src="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg" width=50 height=50 /></a>
        <br><input name="p1" value="p1" prezzo="5" type="checkbox" />
        <br><label>Pianta &euro;</label><span class="price">5</span>
    </li>

    <li>
        <a href="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg"><img src="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg" width=50 height=50 /></a>
        <br><input name="p2" value="p2" prezzo="3" type="checkbox" />
        <br><label>Pianta &euro;</label><span class="price">3</span>
    </li>

var checkValues = $('input[type=checkbox]:checked').map(function() {
    return $(this).attr('prezzo');
}).get();

for(var i=0;i<checkValues.length;i++) {
    var tot = tot + checkValues[i];
    alert(tot);
}

这样,checkvalues包含数组。因此,检查该复选框,例如,在浏览器上显示2警告:

undefined5

undefined53

就像javascript连接数字一样,它们就像字符串一样!

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

尝试改变:

var tot = tot + checkValues[i];

到此:

var tot = tot + +checkValues[i];

改变这个:
return $(this).attr('prezzo');

到此:

return +$(this).attr('prezzo');

这会将字符串强制转换为数字

答案 1 :(得分:1)

你继续重新初始化tot(严格来说这不是JS中的一个问题,但它的形式很糟糕),而且你最初将它初始化为未定义的,因为你正在定义它本身。在循环之前将其初始化为0.

答案 2 :(得分:1)

检查出来:

var tot = 0;
for(var i=0;i<checkValues.length;i++) {
    tot = tot + parseInt(checkValues[i]);
    alert(tot);
}

答案 3 :(得分:1)

Javascript是一种鸭子类型(松散类型)语言。如果它认为它们是字符串,它就会将它们连接起来。尝试强制它们进入您需要的数据类型。如果它们是整数,请使用parseInt(varName)+ parseInt(varName2)。

http://www.w3schools.com/jsref/jsref_parseint.asp