我从输入标签获得输入,但无论我在输入中写什么,它都识别为字符串值,因此我无法使用我的条件。
和第二个问题,如果我输入“ddd”作为第一个输入而“111”表示第二个输入并按下按钮它在控制台中显示NaN。我想显示警报而不是这个。我该如何纠正这些?
function addFunc() {
var x = document.getElementById("num1").value;
var y = document.getElementById("num2").value;
if (typeof x == 'string' || typeof y == 'string') {
var result = parseInt(x) + parseInt(y);
console.log(result);
} else {
alert("Wrong Entry!");
}
}
<input id="num1">
<input id="num2">
<button type="button" onclick="addFunc()">ADD</button>
<p id="result"></p>
答案 0 :(得分:5)
输入字段的值始终为字符串。尝试使用isNaN()
来确定是否正确解析了小数:
function addFunc() {
var x = parseInt(document.getElementById("num1").value);
var y = parseInt(document.getElementById("num2").value);
if ( !isNaN(x) && !isNaN(y) )
{
var result = x + y;
console.log(result);
}
else {
alert("Wrong Entry!");
}
}
&#13;
<form onsubmit="addFunc(); return false">
<input type="text" id="num1" />
<input type="text" id="num2" />
<input type="submit" value="Add" />
</form>
&#13;
或者,如果要消除所有错误输入(1e无效),请尝试在字符串值to convert it to a number之前使用+
符号。如果字符串无法转换,则会返回NaN
:
function addFunc() {
var x = +document.getElementById("num1").value;
var y = +document.getElementById("num2").value;
if ( !isNaN(x) && !isNaN(y) )
{
var result = x + y;
console.log(result);
}
else {
alert("Wrong Entry!");
}
}
&#13;
<form onsubmit="addFunc(); return false">
<input type="text" id="num1" />
<input type="text" id="num2" />
<input type="submit" value="Add" />
</form>
&#13;