首页 > 解决方案 > 验证数字 1、2 和 3 时出现问题

问题描述

我目前正在执行一项任务,其中一个人必须选择洞穴 1、2 或 3。除了验证部分外,一切正常。此函数用于查看用户输入的数字是否小于 1、大于 3 或甚至没有数字。我正在尝试使用 while 循环来解决我的问题。我尝试在倒数第三个和第二个括号之间继续。

//Gets input from the user
guess = prompt("Which cave will you go in? 1, 2 or 3?");
valid(guess);

//Checks if the input is valid
function valid(number) {
    while(isNaN(number) || number < 1 || number > 3){
        alert("Please Try Again");
        prompt("Which cave will you go in? 1, 2 or 3?");
        if(number <= 1 || number >= 3){
            break;
        }
    }  
}

标签: javascriptvalidationwhile-loop

解决方案


您需要将第二个提示返回值存储在一个变量中。

此外,返回值prompt始终是字符串,因此您也需要将其解析为 int 以进行正确比较,尽管 JS 会为您隐式转换它。

//Gets input from the user
guess = parseInt(prompt("Which cave will you go in? 1, 2 or 3?"));
valid(guess);

//Checks if the input is valid
function valid(number) {
    while(isNaN(number) || number < 1 || number > 3){
        alert("Please Try Again");
        let number = parseInt(prompt("Which cave will you go in? 1, 2 or 3?"));
        if(number <= 1 || number >= 3){
            break;
        }
    }  
}

推荐阅读