javascript中的加号(+)用于合并字符串而非求和?

5

我创建了一个简单的程序来求两个数字的和,但是程序却在连接这两个数字而不是相加,这太令人困惑了!有谁能帮忙吗?

function calculate() {
  var numberOne = document.querySelector(".first").value;
  var numberTwo = document.querySelector(".second").value;
  var sum = numberOne + numberTwo;
  document.querySelector(".result").innerHTML = "The sum of the two numbers is : " + sum;
}
<!doctype html>
<html>

<body>
  <p>Calculate sum of two numbers !</p>
  Enter 1rst Number:<br>
  <input type="number" class="first" placeholder=""><br><br> Enter 2nd Number:<br>
  <input type="number" class="second" placeholder=""><br><br>
  <input type="button" onclick="calculate()" value="calculate">
  <p class="result"></p>
</body>

</html>


看这个答案:+num1 + +num2; -> https://dev59.com/4mox5IYBdhLWcg3wyHLc#8976659 - N1gthm4r3
7个回答

17

这里的value给出的是一个字符串,因此使用了串联操作符。尝试将其解析为数字:

var sum = parseInt(numberOne) + parseInt(numberTwo);

查看演示fiddle


3

Javascript默认只接受dom元素的字符串形式。如果要进行数学计算,您需要将其强制转换为整数/浮点数或转换为数字。

parseInt(number) = number, truncates after decimal value
parseFloat(number) = number with decimal values
Number(number) = number with or without decimal

2

你的numberOnenumberTwo都是字符串,所以当你使用+符号连接两个字符串时,你得到的是连接后的字符串。

首先将它们解析为数字,然后再求和。你可以使用parseInt()parseFloat()函数来实现。

var numberOne = '7';
var numberTwo = '8';

var sum = numberOne + numberTwo;
console.log(sum);

sum = parseFloat(numberOne) + parseFloat(numberTwo);
console.log(sum);


1
使用parseInt()来实现,查看下面的代码片段。

function calculate() {
    var numberOne = document.querySelector(".first").value;
    var numberTwo = document.querySelector(".second").value;
    var sum = parseInt(numberOne) + parseInt(numberTwo);
    document.querySelector(".result").innerHTML = "The sum of the two numbers is : " + sum;
  }
 <p>Calculate sum of two numbers !</p>
  Enter 1rst Number:<br>
  <input type="number" class="first" placeholder=""><br><br>
  Enter 2nd Number:<br>
  <input type="number" class="second" placeholder=""><br><br>
  <input type="button" onclick="calculate()" value="calculate">
  <p class="result"></p>


1

Example , you can use this:

var numberOne:number = +document.querySelector(".first").value;
var numberTwo:number = +document.querySelector(".second").value;
var sum = numberOne + numberTwo;

你应该使用 Angular 的 TypeScript,其中包含了 + 符号。

对我来说有效。parseInt不行。但是我正在修复图像模态框/滑块中我的图像幻灯片索引的连接问题。 - Maria Campbell

0

这是因为值以字符串形式返回。所以求和操作以连接结束。 你需要将这两个值都转换。

使用下面的代码

 var sum = parseFloat(numberOne) + parseFloat(numberTwo);

0

在使用Salesforce的JavaScript的人请确保

var a= 8 ;
var b =8 ;
var c = a+b;

这将给你结果输出 = 88; 它只是简单地连接。如果你想把它们加起来: 你应该写逻辑:

var a = 8;
var b = 8
var c = parseInt(a)+ parseInt(b);

这将为您提供所需的结果16,乘法也是如此。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接