我正在制作一个有趣的计算器,但由于某种原因,一切都有效,但增加了。 它不是添加两个数字,而是将它们都写入。例如,5 + 7显示为57。
正如我之前所说, - ,/和*工作正常。我该如何解决这个问题?
以下是代码:
$('.solve2').click(function(){
var num1 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});
答案 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()
- 它都会返回一个字符串。当+
的一个操作数是一个字符串而另一个是一个原语 - 即数字,字符串,布尔值,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);
});