okc*_*sed 167 html javascript
我正在添加两个数字,但我没有得到正确的值.
例如,1 + 2返回12而不是3
我在这段代码中做错了什么?
function myFunction() {
var y = document.getElementById("txt1").value;
var z = document.getElementById("txt2").value;
var x = y + z;
document.getElementById("demo").innerHTML = x;
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
elc*_*nrs 315
它们实际上是字符串而非数字.从字符串生成数字的最简单方法是将其添加到+:
var x = +y + +z;
Run Code Online (Sandbox Code Playgroud)
ger*_*ard 118
我只是用Number():
var i=2;
var j=3;
var k = Number(i) + Number(j); // 5
Run Code Online (Sandbox Code Playgroud)
mit*_*tim 28
您需要使用javaScript的parseInt()方法将字符串转换回数字.现在它们是字符串,所以添加两个字符串连接它们,这就是为什么你得到"12".
Zor*_*ayr 22
使用parseInt(...)但请确保指定基数值; 否则你会遇到几个错误(如果字符串以"0"开头,基数是八进制/ 8等).
var x = parseInt(stringValueX, 10);
var y = parseInt(stringValueY, 10);
alert(x + y);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
Man*_*ngo 10
以下内容在一般情况下可能有用。
首先,HTML 表单字段仅限于text。这尤其适用于文本框,即使您已经煞费苦心地确保该值看起来像一个数字。
其次,无论好坏,JavaScript 都重载了+具有两种含义的运算符:添加数字和连接字符串。它偏好连接,所以即使是像这样的表达式3+'4'也会被视为连接。
第三,如果可以,并且需要的话,JavaScript 将尝试动态更改类型。例如,'2'*'3'将两种类型都更改为数字,因为您不能将字符串相乘。如果其中之一不兼容,您将得到NaN, Not a Number。
出现您的问题是因为来自表单的数据被视为字符串,+因此将连接而不是添加。
从表单中读取所谓的数字数据时,您应该始终将其推送到parseInt()或parseFloat(),具体取决于您想要整数还是小数。
请注意,这两个函数都没有真正将字符串转换为数字。相反,它会从左到右解析字符串,直到它得到一个无效的数字字符或最后,并转换已被接受的内容。在 的情况下parseFloat,这包括一位小数点,但不包括两位。
有效数字之后的任何内容都会被忽略。如果字符串甚至不是以数字开头,它们都会失败。然后你会得到NaN。
来自表单的数字的一个很好的通用技术是这样的:
var data=parseInt(form.elements['data'].value); // or parseFloat
Run Code Online (Sandbox Code Playgroud)
如果您准备将无效字符串合并为 0,则可以使用:
var data=parseInt(form.elements['data'].value) || 0;
Run Code Online (Sandbox Code Playgroud)
这不会总结出数字;相反,它将连接它:
var x = y + z;
Run Code Online (Sandbox Code Playgroud)
你需要做:
var x = (y)+(z);
Run Code Online (Sandbox Code Playgroud)
您必须使用 parseInt 来指定对数字的操作。例子:
var x = parseInt(y) + parseInt(z); [final soulution, as everything us]
Run Code Online (Sandbox Code Playgroud)
小智 5
boss只是添加一个简单的类型转换方法,因为输入是在文本使用后面进行的
var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = y + z;
Run Code Online (Sandbox Code Playgroud)
简单
var result = parseInt("1") + parseInt("2");
console.log(result ); // Outputs 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
501142 次 |
| 最近记录: |