我发现自己需要创建一个函数来验证 JS 提示符的输入是否为整数。事实证明,按 cancel
返回 null 时,存在一些微妙之处。
我最初尝试的(从Python程序移植)是:
function getInteger() {
let number = null
while ( number == null ) {
let value = prompt( "Guess number: " )
if ( isNaN( value ) ) {
alert( "Invalid input." )
} else {
number = parseInt( value )
}
}
return number;
}
但是,如果我取消提示,这将返回 NaN
,这作为返回值没有意义(似乎 isNaN(null)
返回 false
)。 (“By”没有意义,我的意思是“不能被程序的其余部分有意义地使用,因为它不能描述发生的事情”)。
经过一番思考,我想出了:
function getInteger(){
while(true){
let input = prompt("Input number: ");
if (input && isNaN( input ) ) {
// user pressed OK, but input invalid
alert("Invalid input.");
} else if (input) {
// user typed something valid and hit OK
return parseInt(input);
} else {
// User pressed cancel
alert("I'm out of here.")
return;
}
}
}
getInteger()
我很好奇我是否已经涵盖了所有可能的输入?另外,我的代码是否“写得好”——有更好的方法吗?使用 while(true)
被认为是一个坏主意吗?
我知道一般来说提示可能不是一个好主意,但这不是重点。
感谢任何帮助。
最佳答案
我运行上面的代码,我尝试不输入任何内容,然后按“确定”,它会显示警报,就像我取消提示一样。我认为你还应该检查用户是否输入了某些内容或什么都不输入。您的代码可能如下所示:
function getInteger(){
while(true){
let input = prompt("Input number: ");
if (input == null) {
// user hit cancel
alert("I'm out of here.")
return true;
} else{
if (input.length<=0 || isNaN( input ) ) {
// user pressed OK, but input invalid or does not input anything
alert("Invalid input.");
} else {
// user typed something valid and hit OK
return parseInt(input);
}
}
}
}
getInteger()
关于JavaScript 整数输入提示验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078896/