有人可以告诉我为什么下面的代码不起作用并提供可能的修复。当按钮被按下时,我希望它根据用户是否在输入字段中输入数字来显示正确或不正确。
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;
}
答案 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
函数中获取输入标记的值。我在下面提供了工作代码:
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;
答案 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>))
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;
答案 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>