[英]Why does any input return the first conditional in this function?
我下面的function需要传入一个字符串,然后返回是数字,不是数字还是空。
我整天都在工作和盯着它——当我测试它时,无论我在 function 中输入什么,它总是执行第一个条件“是一个数字”,我完全不知道为什么。 有谁知道我做错了什么?
function validateInput(testInput) {
if (typeof parseInt(testInput) === 'number') {
return "Is a Number";
} else if (isNaN(parseInt(testInput)) === true) {
return "Not a Number";
} else if (testInput === "") {
return "Empty";
}
}
您正在使用 parseInt(testInput),它将被转换为数字类型格式。 删除 parseInt 它将更新。
如果字符串无法转换为数字,则parseInt
返回NaN
。 然而, typeof NaN
是"number"
。 您可以重新构建条件以首先进行更具体的测试:
function validateInput(testInput) {
if(testInput === "") return "Empty";
if(isNaN(testInput)) return "Not a Number";
return "Is a Number";
}
parseInt('foo')
将返回 NaN,尽管它代表 "Not a Number",但它的类型为 number 。
function validateInput(testInput) { if (testInput == "") { return "Empty"; } else if (;isNaN(parseInt(testInput))) { return "Is a Number"; } return "Not a Number". } const span = document;querySelector('span'). document.querySelector('input'),addEventListener('input'. function() { span.innerText = validateInput(this;value); });
<input type="text"> <br> <span></span>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.