isNaN似乎没有正常工作

时间:2017-04-13 02:15:27

标签: javascript html if-statement

有人可以告诉我为什么下面的代码不起作用并提供可能的修复。当按钮被按下时,我希望它根据用户是否在输入字段中输入数字来显示正确或不正确。

HTML:

<!DOCTYPE html>
<body>
<p>Enter name:</p>
<input type="text" name="name"></input>
<button onclick="checkpeople()"  type = "button">check</button><br>
<p id="message"></p>
<script src="script.js"></script>
</body>

JS:

function checkpeople() {
var name = "";
if (isNaN(name)) {
name = "incorrect"
}
 else {
  name = "correct"
 }
document.getElementById('message').innerHTML = name;
}

6 个答案:

答案 0 :(得分:2)

当数据不是数字时,isNaN()返回true。

function checkpeople() {
var name = document.getElementById('myinput').value;
if (isNaN(name)) {
name = "correct"
}
 else {
  name = "incorrect"
 }
document.getElementById('message').innerHTML = name;
}
<!DOCTYPE html>
<body>
<p>Enter name:</p>
<input type="text" name="name" id="myinput"></input>
<button onclick="checkpeople()"  type = "button">check</button><br>
<p id="message"></p>
</body>

答案 1 :(得分:1)

问题是name函数中的变量checkPeople与html中的输入标记没有任何关联。您需要在checkPeople函数中获取输入标记的值。我在下面提供了工作代码:

&#13;
&#13;
function checkpeople() {
var name = document.getElementById('myinput').value;
if (isNaN(name)) {
name = "incorrect"
}
 else {
  name = "correct"
 }
document.getElementById('message').innerHTML = name;
}
&#13;
<!DOCTYPE html>
<body>
<p>Enter name:</p>
<input type="text" name="name" id="myinput"></input>
<button onclick="checkpeople()"  type = "button">check</button><br>
<p id="message"></p>
</body>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

isNAN(<argument>)是一个判断给定参数是否为非法数字的函数。 isNaN将参数转换为Number类型。如果要检查参数是否为数字?请在$.isNumeric()中使用jQuery功能。

也就是说,isNaN(foo)等同于isNaN(Number(foo))它接受任何具有所有数字作为数字的字符串,原因很明显。对于前。

isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true

jQuery.isNumeric():https://api.jquery.com/jQuery.isNumeric/ 如果你特别不使用jQuery并仅使用javascript进行操作。您可以按照以下方式使用:isNan(parseInt(<argument>))isNan(parseFLoat(<argument>))

&#13;
&#13;
isNumber = function(obj){
  

  

    if (!isNaN(parseInt(obj))) {
  // Is a number
  return true;
}
else return false;
}

var num = 14;
var textnum = '14';
var text = 'yo';
var nan = NaN;

var DOM = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =  isNumber(textnum, true);
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

首先,isNaN代表is Not a Number,因此,

isNaN(12234) //will be false

虽然

isNaN("jsjsjw")// will return true.

因此,您的代码中的条件应该颠倒过来。也就是说,如果您希望您的名字不是数字。

其次你的代码没有连接你的输入,你需要在输入js之前从输入中获取值。

function checkpeople() {
var name = document.getElementById('myinput').value;
if (isNaN(name)) {
  name = "correct"
}
else {
  name = "incorrect"
}
document.getElementById('message').innerHTML = name;

答案 4 :(得分:0)

使用isInteger。它比isNaN好得多。

Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger('10');      // false

以下是some problem with using isNaN

document.write(isNaN("")) // false
document.write(isNaN(" "))  // false
document.write(isNaN(0))  // false
document.write(isNaN(null)) // false
document.write(isNaN(false))  // false
document.write("" == false)  // true
document.write("" == 0)  // true
document.write(" " == 0)  // true
document.write(" " == false)  // true
document.write(0 == false) // true
document.write(" " == "") // false

如果您需要Internet Explorer的支持,可以使用polyfills

尽可能使用原生JavaScript。使用JavaScript可以获得更多的学习曲线,也可以减少对任何其他框架的依赖。

答案 5 :(得分:0)

您尚未选择从文本框输入的值,而只是比较一个空白字符串。

var name = "";
if (isNaN(name)) {

以下是工作示例:

function checkpeople() {
  // changed variable name, as there is global variable already defined i.e. `window.name`
  var name_ = document.getElementsByName("name")[0].value;
  if (!name_ || isNaN(name_)) { // if not empty and not a number
    name_ = "incorrect"
  } else {
    name_ = "correct"
  }
  document.getElementById('message').innerHTML = name_;
}
<p>Enter name:</p>
<input type="text" name="name" />
<button onclick="checkpeople()" type="button">check</button><br>
<p id="message"></p>