Javascript Jquery:+;isn';不正常工作
我做一个计算器是为了好玩,但出于某种原因,除了加法之外,一切都可以用。 它不是把两个数字相加,而是把它们都写下来。例如,5+7表示为57 正如我之前所说,/,和*工作得很好。我该如何解决这个问题 代码如下:Javascript Jquery:+;isn';不正常工作,javascript,jquery,dom,Javascript,Jquery,Dom,我做一个计算器是为了好玩,但出于某种原因,除了加法之外,一切都可以用。 它不是把两个数字相加,而是把它们都写下来。例如,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 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});
使用时,它解析字符串参数并返回一个浮点数
var ans = parseFloat(num1)+parseFloat(num2);
根据您的示例,它作为cocantation运算符使用,它解析字符串参数并返回一个浮点数
var ans = parseFloat(num1)+parseFloat(num2);
根据您的示例,它充当协同触角运算符将您的值从字符串转换为数字。
+
既是加法运算符又是共触角运算符
将值从字符串转换为数字。
+
既是加法运算符又是共触角运算符
您可以使用parseFloat代替parseInt,如另一个答案中所述
编辑:
如下面的注释所述,最好强制将字符串解释为十进制数。可以通过添加基数参数来实现这一点
var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);
您可以使用parseFloat代替parseInt,如另一个答案中所述
编辑:
如下面的注释所述,最好强制将字符串解释为十进制数。可以通过添加基数参数来实现这一点
var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);
很简单,您必须将字符串转换为整数。使用parseInt
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
查看我的示例:
很简单,您必须将字符串转换为整数。使用parseInt
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
查看我的示例:
当您通过纯JS或使用jQuery的
.val()
获取输入元素的值时,它将作为字符串返回。当+
的一个操作数是字符串,另一个是基元(即数字、字符串、布尔值、未定义的
或空
)时,另一个操作数将转换为字符串,并将其串联:
4 + " four" === "4 four"; // true
false + " is now a string" === "false is now a string"; // true
等等
因此,从.val()
返回的值将被串联,您需要使用以下方法将从.val()
返回的字符串转换为数字:
当您通过纯JS或使用jQuery的
.val()
获取输入元素的值时,它将作为字符串返回。当+
的一个操作数是字符串,另一个是基元(即数字、字符串、布尔值、未定义的
或空
)时,另一个操作数将转换为字符串,并将其串联:
4 + " four" === "4 four"; // true
false + " is now a string" === "false is now a string"; // true
等等
因此,从.val()
返回的值将被串联,您需要使用以下方法将从.val()
返回的字符串转换为数字:
您缺少
parseInt
的radix
参数。radix参数是可选的,据我所知,提问者只使用十进制数。(在较旧的浏览器中,当用户输入一个前导为“0”的数字时,这可能是一个问题,因此添加基数10可能更安全。但这不是必需的。)@Tom Octal表示法在现代浏览器中仍然有效并受严格模式支持。但这不是重点。基数的存在是为了防止数字被解释为十进制以外的任何东西。输入中完全可能有一个前导0,因为来自字段的值是字符串。您缺少parseInt
的radix
参数。radix参数是可选的,据我所知,提问者只使用十进制数。(在较旧的浏览器中,当用户输入一个前导为“0”的数字时,这可能是一个问题,因此添加基数10可能更安全。但这不是必需的。)@Tom Octal表示法在现代浏览器中仍然有效并受严格模式支持。但这不是重点。基数的存在是为了防止数字被解释为十进制以外的任何东西。输入中完全可能有一个前导0,因为来自字段的值是字符串。