我正在制作一个有趣的计算器,但由于某种原因,除了加法之外一切正常。它不是将两个数字相加,而是将它们都写下来。例如 5 + 7 显示为 57。
正如我之前所说,-、/ 和 * 工作正常。我应该如何解决这个问题?
这是代码:
$('.solve2').click(function(){
var num1 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});
我正在制作一个有趣的计算器,但由于某种原因,除了加法之外一切正常。它不是将两个数字相加,而是将它们都写下来。例如 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+'');
});
您可以使用 parseFloat 而不是 parseInt,如另一个答案中所述。
编辑:正如下面评论中所述,最好强制将字符串解释为十进制数。您可以通过添加 radix 参数来做到这一点。
var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);
当您获取输入元素的值时——无论是通过普通 JS 还是使用 jQuery——.val()
它都会以字符串形式返回。当 的操作数之一+
是字符串而另一个是原语时 - 即数字、字符串、布尔值undefined
或null
- 然后另一个被转换为字符串并将它们连接起来:
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);
});
将您的值从字符串转换为数字。+
既是加法运算符又是共联运算符。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators
很简单,您必须将字符串转换为整数。使用 parseInt
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
查看我的示例: JSFiddle 示例