为什么每次都给我String?

时间:2016-08-17 14:53:00

标签: javascript html

我从输入标签获得输入,但无论我在输入中写什么,它都识别为字符串值,因此我无法使用我的条件。

和第二个问题,如果我输入“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>

1 个答案:

答案 0 :(得分:5)

输入字段的值始终为字符串。尝试使用isNaN()来确定是否正确解析了小数:

&#13;
&#13;
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;
&#13;
&#13;

或者,如果要消除所有错误输入(1e无效),请尝试在字符串值to convert it to a number之前使用+符号。如果字符串无法转换,则会返回NaN

&#13;
&#13;
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;
&#13;
&#13;