提问人:okconfused 提问时间:1/24/2013 最后编辑:Ivarokconfused 更新时间:5/8/2021 访问量:722459
将两个数字相加是将它们连接起来,而不是计算总和
Adding two numbers concatenates them instead of calculating the sum
问:
我正在添加两个数字,但我没有得到正确的值。
例如,doing 返回 12 而不是 31 + 2
我在这个代码中做错了什么?
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = y + z;
document.getElementById("demo").innerHTML = x;
}
<p>
Click the button to calculate x.
<button onclick="myFunction()">Try it</button>
</p>
<p>
Enter first number:
<input type="text" id="txt1" name="text1" value="1">
Enter second number:
<input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>
答:
它们实际上是字符串,而不是数字。从字符串生成数字的最简单方法是在它前面加上:+
var x = +y + +z;
评论
+
您需要使用 JavaScript 的方法将字符串转换回数字。现在它们是字符串,所以添加两个字符串会将它们连接起来,这就是你得到“12”的原因。parseInt()
评论
parseInt()
parseFloat
进行修改。
parseInt()
parseInt()
使用 parseInt(...),但请确保指定基数值;否则,您将遇到几个错误(如果字符串以“0”开头,则基数为八进制/8 等)。
var x = parseInt(stringValueX, 10);
var y = parseInt(stringValueY, 10);
alert(x + y);
希望这有帮助!
评论
parseInt()
parseInt("012")
[1,2].map(parseInt)
您可以使用正则表达式进行预检查,因为它们是数字,就像
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
if((x.search(/[^0-9]/g) != -1)&&(y.search(/[^0-9]/g) != -1))
var x = Number(y)+ Number(z);
else
alert("invalid values....");
document.getElementById("demo").innerHTML = x;
}
评论
只需添加一个简单的类型转换方法,因为输入是以文本形式进行的。使用以下命令:
var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = y + z;
这很简单:
<html>
<body>
<p>Click the button to calculate x.</p>
<button onclick="myFunction()">Try it</button>
<br/>
<br/>Enter first number:
<input type="text" id="txt1" name="text1">Enter second number:
<input type="text" id="txt2" name="text2">
<p id="demo"></p>
<script>
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = +y + +z;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>
我只是使用:Number()
var i = "2";
var j = "3";
var k = Number(i) + Number(j); // 5
评论
var k += Number(i)
Number
另一种解决方案,只是分享:):
var result=eval(num1)+eval(num2);
评论
eval
用于用户数据。eval()
试试这个:
<!DOCTYPE html>
<html>
<body>
<p>Add Section</p>
<label>First Number:</label>
<input id="txt1" type="text"/><br />
<label>Second Number:</label>
<input id="txt2" type="text"/><br />
<input type="button" name="Add" value="Add" onclick="addTwoNumber()"/>
<p id="demo"></p>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = Date();
}
function addTwoNumber(){
var a = document.getElementById("txt1").value;
var b = document.getElementById("txt2").value;
var x = Number(a) + Number(b);
document.getElementById("demo").innerHTML = "Add Value: " + x;
}
</script>
</body>
</html>
简单
var result = parseInt("1") + parseInt("2");
console.log(result ); // Outputs 3
在添加步骤中缺少类型转换...
应该是var x = y + z;
var x = parseInt(y) + parseInt(z);
<!DOCTYPE html>
<html>
<body>
<p>Click the button to calculate x.</p>
<button onclick="myFunction()">Try it</button>
<br/>
<br/>Enter first number:
<input type="text" id="txt1" name="text1">Enter second number:
<input type="text" id="txt2" name="text2">
<p id="demo"></p>
<script>
function myFunction()
{
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = parseInt(y) + parseInt(z);
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>
<head>
<script type="text/javascript">
function addition()
{
var a = parseInt(form.input1.value);
var b = parseInt(form.input2.value);
var c = a+b
document.write(c);
}
</script>
</head>
<body>
<form name="form" method="GET">
<input type="text" name="input1" value=20><br>
<input type="text" name="input2" value=10><br>
<input type="button" value="ADD" onclick="addition()">
</form>
</body>
</html>
评论
此代码将两个变量相加!把它放到你的函数中
var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = (y +z);
document.getElementById("demo").innerHTML = x;`
如果我们有两个输入字段,那么从输入字段中获取值,然后使用 JavaScript 添加它们。
$('input[name="yourname"]').keyup(function(event) {
/* Act on the event */
var value1 = $(this).val();
var value2 = $('input[name="secondName"]').val();
var roundofa = +value2+ +value1;
$('input[name="total"]').val(addition);
});
这不会总结这个数字;相反,它将连接它:
var x = y + z;
您需要做:
var x = (y)+(z);
您必须使用 parseInt 才能指定对数字的操作。例:
var x = parseInt(y) + parseInt(z); [final soulution, as everything us]
评论
addition
subtraction
下面通过解析函数中的变量来编写代码。
function myFunction() {
var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = y + z;
document.getElementById("demo").innerHTML = x;
}
<p>Click the button to calculate x.</p>
<button onclick="myFunction()">Try it</button>
<br/>
<br/>Enter first number:
<input type="text" id="txt1" name="text1">
<br>Enter second number:
<input type="text" id="txt2" name="text2">
<p id="demo"></p>
答
使用它会将字符串转换为数字,包括十进制值。parseFloat
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = parseFloat(y) + parseFloat(z);
document.getElementById("demo").innerHTML = x;
}
<p>
Click the button to calculate x.
<button onclick="myFunction()">Try it</button>
</p>
<p>
Enter first number:
<input type="text" id="txt1" name="text1" value="1">
Enter second number:
<input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>
<input type="text" name="num1" id="num1" onkeyup="sum()">
<input type="text" name="num2" id="num2" onkeyup="sum()">
<input type="text" name="num2" id="result">
<script>
function sum()
{
var number1 = document.getElementById('num1').value;
var number2 = document.getElementById('num2').value;
if (number1 == '') {
number1 = 0
var num3 = parseInt(number1) + parseInt(number2);
document.getElementById('result').value = num3;
}
else if(number2 == '')
{
number2 = 0;
var num3 = parseInt(number1) + parseInt(number2);
document.getElementById('result').value = num3;
}
else
{
var num3 = parseInt(number1) + parseInt(number2);
document.getElementById('result').value = num3;
}
}
</script>
评论
你也可以这样写: 变量 z = x - -y ; 你会得到正确的答案。
<body>
<input type="text" id="number1" name="">
<input type="text" id="number2" name="">
<button type="button" onclick="myFunction()">Submit</button>
<p id="demo"></p>
<script>
function myFunction() {
var x, y ;
x = document.getElementById('number1').value;
y = document.getElementById('number2').value;
var z = x - -y ;
document.getElementById('demo').innerHTML = z;
}
</script>
</body>
以下内容在一般情况下可能很有用。
首先,HTML 表单字段仅限于文本。这尤其适用于文本框,即使您已经煞费苦心地确保该值看起来像一个数字。
其次,无论好坏,JavaScript 都使运算符重载了两个含义:它添加数字,以及连接字符串。它偏爱串联,因此即使是像这样的表达式也会被视为串联。
+
3+'4'
第三,如果可以的话,JavaScript 会尝试动态地更改类型,如果需要的话。例如,将两种类型都更改为数字,因为您不能将字符串相乘。如果其中一个不兼容,你会得到 ,而不是一个数字。
'2'*'3'
NaN
出现问题的原因是来自表单的数据被视为字符串,因此将连接而不是添加。+
从表单中读取假定的数字数据时,应始终将其推送到 或 ,具体取决于您是想要整数还是小数。parseInt()
parseFloat()
请注意,这两个函数都不会真正将字符串转换为数字。相反,它将从左到右解析字符串,直到它到达无效的数字字符或末尾并转换已接受的内容。在 的情况下,它包括一个小数点,但不包括两个小数点。parseFloat
有效数字之后的任何内容都将被忽略。如果字符串甚至不是以数字开头,它们都会失败。然后你会得到.NaN
对于表单中的数字,一个好的通用技术是这样的:
var data=parseInt(form.elements['data'].value); // or parseFloat
如果准备将无效字符串合并为 0,可以使用:
var data=parseInt(form.elements['data'].value) || 0;
或者你可以简单地初始化
变量 x = 0;(您应该使用 let x = 0;
这样,它将添加而不是连接。
如果没有任何效果,那么只试试这个。这可能不是正确的方法,但当上述所有方法都失败时,它对我有用。
var1 - (- var2)
评论
+x + +y
这也可以通过使用输出
元素的更本机的 HTML 解决方案来实现。
<form oninput="result.value=parseInt(a.valueAsNumber)+parseInt(b.valueAsNumber)">
<input type="number" id="a" name="a" value="10" /> +
<input type="number" id="b" name="b" value="50" /> =
<output name="result" for="a b">60</output>
</form>
https://jsfiddle.net/gxu1rtqL/
该元素可以用作用户操作的计算或输出的容器元素。您还可以将 HTML 类型从 更改为 ,并使用不同的 UI 元素保留相同的代码和功能,如下所示。output
number
range
<form oninput="result.value=parseInt(a.valueAsNumber)+parseInt(b.valueAsNumber)">
<input type="range" id="a" name="a" value="10" /> +
<input type="number" id="b" name="b" value="50" /> =
<output name="result" for="a b">60</output>
</form>
https://jsfiddle.net/gxu1rtqL/2/
也许您可以使用此函数来添加数字:
function calculate(a, b) {
return a + b
}
console.log(calculate(5, 6))
评论
<input type="number">
.valueAsNumber