Jquery: + 无法正常工作

Jquery: + isn't working right

本文关键字:工作 常工作 Jquery      更新时间:2023-09-26

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

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

这是代码:

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

代替parseInt,你可以使用parseFloat,如另一个答案中所述。

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

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

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

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

根据您的示例,它正在作为协力操作员工作

将值从字符串转换为数字。 +既是加法算子,又是协进算子。

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

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

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

查看我的示例:JSFiddle sample<</p>

div class="answers">

当你通过纯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);
});