为什么这个连接而不是加起来

时间:2012-10-04 14:58:54

标签: javascript jquery html

非常基本的问题,但我有以下HTML:

<input type="text" id="nspcc" value="0" onkeyup="doTotal();" />
<input type="text" id="barnados" value="0" onkeyup="doTotal();" />
<input type="text" id="savethechildren" value="0" onkeyup="doTotal();" />
<input type="text" id="childresnsociety" value="0" onkeyup="doTotal();" />
<input type="text" id="childreninneed" value="0" onkeyup="doTotal();" />
<input type="text" id="total" disabled="disabled"  />

以下jQuery:

function doTotal() {
  var one,two,three,four,five,total;
  one = $('#nspcc').val();
  two = $('#barnados').val();
  three = $('#savethechildren').val();
  four = $('#childresnsociety').val();
  five = $('#childreninneed').val();
  total = one+two+three+four+five;
  $('#total').val(total);
}

doTotal();

我可能正在做一些愚蠢但为什么total连接而不是添加值?我需要使用parseInt或其他什么吗?

3 个答案:

答案 0 :(得分:6)

  

我需要使用parseInt吗?

是。 .val()方法返回一个字符串,因此您需要确保对数字进行操作(因为+运算符被重载以根据上下文执行加法和连接):

one = parseInt($('#nspcc').val(), 10);
//etc...

不要忘记parseInt的第二个参数(基数)!

答案 1 :(得分:0)

  

我需要使用parseInt吗?

完全。 val()将返回字符串,它将被连接而不会被添加。

请注意,使用parseInt时,应为正确的基数提供基数参数(第二个) - 十进制为10,否则假设八进制。

one = parseInt( $('#nspcc').val() , 10);

答案 2 :(得分:0)

简短的回答,是的。你需要parseInt()你的.val()值,因为它们是值的字符串解释,所以它们只是连接。