Jquery:+不能正常工作

时间:2013-10-01 22:40:01

标签: javascript jquery dom

我正在制作一个有趣的计算器,但由于某种原因,一切都有效,但增加了。 它不是添加两个数字,而是将它们都写入。例如,5 + 7显示为57。

正如我之前所说, - ,/和*工作正常。我该如何解决这个问题?

以下是代码:

$('.solve2').click(function(){
var num1 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});

5 个答案:

答案 0 :(得分:2)

使用parseFloat,它解析一个字符串参数并返回一个浮点数。

var ans = parseFloat(num1)+parseFloat(num2);

根据你的例子,它是作为cocantenation运算符

答案 1 :(得分:2)

$('.solve2').click(function(){
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
var ans = num1+num2;
alert(''+ans+'');
});

您可以使用另一个答案中所述的parseFloat而不是parseInt。

编辑: 如下面的评论中所述,强制将字符串解释为十进制数更好。您可以通过添加基数参数来完成此操作。

var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);

答案 2 :(得分:0)

将值从字符串转换为数字。 +既是加法运算符又是cocantenation运算符。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators

答案 3 :(得分:0)

简单,您必须将字符串转换为整数。使用parseInt

var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());

查看我的样本: JSFiddle sample

答案 4 :(得分:0)

当你获得输入元素的值时 - 无论是通过普通JS还是使用jQuery的.val() - 它都会返回一个字符串。当+的一个操作数是一个字符串而另一个是一个原语 - 即数字,字符串,布尔值,undefinednull时,另一个操作数转换为字符串和它们连接在一起:

4 + " four" === "4 four";  // true
false + " is now a string" === "false is now a string";  // true

因此,从.val()返回的值正在连接,您需要使用parseFloat将从.val()返回的字符串转换为数字:

$('.solve2').click(function(){
    var num1 = parseFloat($('#num').val()),
        num2 = parseFloat($('#number').val()),
        ans = num1 + num2;
    console.log(ans);
});