0

抱歉,如果这是一个菜鸟问题,但是,我是菜鸟。我想将几个文本字段的值的总和放入另一个文本字段。我的代码如下所示:

$('.button').mouseup(function()  {
    var sum = $("#field1").val()+$("#field2").val();
    $("#result").val(sum);
});

当我单击按钮时,3+3 的总和不是 6,而是 33。它只是将所有数字添加到文本字段中。如果我将“+”更改为“*”,它可以工作,3*3 是 9。有人可以告诉我我做错了什么。谢谢你。

4

6 回答 6

2

.val()检索一个字符串,并添加字符串将它们连接起来。

首先使用parseInt(str,10)值将它们转换为以 10 为底的整数:

var sum = parseInt($("#field1").val(),10)+parseInt($("#field2").val(),10);

如果您正在处理非整数值,请parseFloat()改用。

于 2013-03-04T16:57:33.517 回答
2

问题是 javascript 将+运算符解释为字符串连接操作而不是加法。这样做是因为 的左侧和右侧+都是字符串值。要获得加法,您需要将它们强制转换为int

var left = parseInt($("#field1").val());
var right = parseInt($("#field2").val());
var sum = left + right;
于 2013-03-04T16:57:39.553 回答
1

.val()返回一个字符串,而不是一个数字。你需要包裹parseInt(...val(), 10);

于 2013-03-04T16:57:50.740 回答
0

$("#field1").val()除非另有转换,否则您正在使用的值(即)是字符串。

+运算符在应用于字符串时是一个连接运算符。

在添加之前使用Number()then 周围的函数转换为数字:

var sum = Number($("#field1").val())+Number($("#field2").val());

*运算符的情况下,我怀疑这会自动转换为数字,或者因为*字符串上的运算符设置为自动执行此操作(因为*两个字符串没有逻辑意义),或者因为您的字符串被识别为数字,以便*操作符能够被应用。

于 2013-03-04T16:57:32.977 回答
0

运算符在用于字符串时,将+字符串连接起来,而不是像*运算符那样尝试将它们强制转换为数字。您可以使用parseInt()获取整数而不是字符串。

$('.button').mouseup(function()  {
    var sum = parseInt($("#field1").val()) + parseInt($("#field2").val());
    $("#result").val(sum);
});
于 2013-03-04T16:58:39.337 回答
0

尝试使用parseInt()调用来处理数字的拉取值。

parseInt($('#field1').val())例如。

于 2013-03-04T16:59:20.970 回答