Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery:+;isn';不正常工作_Javascript_Jquery_Dom - Fatal编程技术网

Javascript Jquery:+;isn';不正常工作

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+''); }); 使用时,它解析字符串参数

我做一个计算器是为了好玩,但出于某种原因,除了加法之外,一切都可以用。 它不是把两个数字相加,而是把它们都写下来。例如,5+7表示为57

正如我之前所说,/,和*工作得很好。我该如何解决这个问题

代码如下:

$('.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,因为来自字段的值是字符串。