为什么文本输入的值总是字符串?

问题描述 投票:0回答:1

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

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

javascript html
1个回答
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!");
    }
}
<form onsubmit="addFunc(); return false">
  <input type="text" id="num1" />
  <input type="text" id="num2" />
  <input type="submit" value="Add" />
</form>

或者,如果您想消除所有错误输入(1e 无效),请尝试在字符串值

之前使用 
+ 符号将其转换为数字。如果字符串无法转换,则会返回
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!");
    }
}
<form onsubmit="addFunc(); return false">
  <input type="text" id="num1" />
  <input type="text" id="num2" />
  <input type="submit" value="Add" />
</form>

© www.soinside.com 2019 - 2024. All rights reserved.