首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果某个东西是一个数字,如何从提示符中获取用户输入,以便在while循环中签入?

如果某个东西是一个数字,如何从提示符中获取用户输入,以便在while循环中签入?
EN

Stack Overflow用户
提问于 2020-04-09 21:51:50
回答 2查看 674关注 0票数 0

我是javascript的新手,我已经广泛地研究过如何从提示符中检查用户输入,看看用户是否给出了正确的数字。我已经尝试过result!==isNan() result==isNan(Nan)和其他变体。你能告诉我为什么这个不起作用吗?如何让它起作用?

代码语言:javascript
运行
复制
var result = prompt("Give number between 4-10"); 
    while (result<4||result>10||result==isNaN(result)) 
    {
        var result = prompt("You need to give number between 4-10!");
    }
  alert ("success")
EN

回答 2

Stack Overflow用户

发布于 2020-04-09 22:04:26

您可以尝试通过isNan(result) == true检查结果的值

代码语言:javascript
运行
复制
<script>
var result = prompt("Give number between 4-10"); 
    while (result < 4||result > 10|| isNaN(result) == true) 
    {
        var result = prompt("You need to give number between 4-10!");
    }
  alert ("success")
</script>
票数 0
EN

Stack Overflow用户

发布于 2020-04-09 23:31:30

你的 result==isNaN(result) 代码永远不会被运行

代码语言:javascript
运行
复制
// a prompt returns a string or null ( if cancelled )
// The values are casted to a number when comparing with a value of the type number
console.log( Number(null) ) // 0
console.log( Number('5') ) // 5
console.log( Number('') ) // 0

// this means the values of null and '' are never even reach your isNan() code because 0<4 resolves to true. Thus repeating your loop.

var result = prompt("Give number between 4-10"); 
while ( result<4 || result>10 ) {
  result = prompt("You need to give number between 4-10!");
  // you could break your loop if an use cancels here
  if( result === null ) break;
}
alert ( `success: ${result}`)

可以使用递归而不是while循环

代码语言:javascript
运行
复制
askUser();

function askUser(){
  let answer = prompt('Hello would you please enter a number between 4 and 10?');
  if( answer>4 && answer<10 )
    alert('Thank you, you are awesome!')
  else if( answer === null )
    alert('Really you can\'t think of a number between 4 and 10??!?!?')
  else 
    askUserAgain();
}

function askUserAgain() {
  let answer = prompt('This is not a number between 4 and 10, you are a fool! Please try again.');
  if( answer>4 && answer<10 )
    alert('Thank you, you are awesome!')
  else if( answer === null )
    alert('Really you can\'t think of a number between 4 and 10??!?!?')
  else 
    askUserAgain();
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61122733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档