【问题标题】:JS: promp thet user for input, until they enter a valid value specified in parameterJS:提示用户输入,直到他们输入参数中指定的有效值
【发布时间】:2017-10-16 12:23:25
【问题描述】:

我的脚本应该提示用户输入性别,如果性别是“M”或“F”,那么它将返回。如果有任何其他输入,则必须继续提示,直到输入任何一个值。

function getGender() {
    var yourGender = prompt('Enter your gender (M / F)');
    var choice = yourGender;

if (choice = 'M' || 'F') {
    return choice;
} else
    do {
        var yourGender = prompt('Enter your gender (M / F)');
    }
    while (choice != 'M' || 'F') {

    }
}

【问题讨论】:

    标签: javascript loops for-loop if-statement do-while


    【解决方案1】:

    do-while 循环与while 循环不同,看起来您混淆了它们的语法。以下是来自 MDN 的使用示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while

    此外,当使用逻辑运算符检查真假时,您必须根据每个条件检查变量。你的函数应该更简单:

    function getGender() {
      do {
        var yourGender = prompt('Enter your gender (M / F)').toLowerCase();
      } while (yourGender !== 'm' && yourGender !== 'f');
    
      return yourGender;
    }
    

    【讨论】:

    • 这行得通,谢谢。是的,它应该更简单,感谢帮助。你知道如何使提示符不区分大小写吗?即toLowerCase?
    • @JimmieDavis 当然,我已经用.toLowerCase() 更新了答案。您只需将其添加到提示符的末尾,然后更改小写“m”和“f”的条件检查。
    【解决方案2】:
    function getGender()
    {
        var yourGender; //otherwise, 'while' doesn't know it
        do
        {
            yourGender = prompt('Enter your gener (M/F)');
        } 
        while(yourGender != 'M' && yourGender != 'F')
    }
    

    我不知道提示部分是否正确,但 do-while 部分应该像这样工作。

    【讨论】:

    • 你知道如何让提示符不区分大小写吗?即toLowerCase?
    • 只需在 if 中添加 && yourGender != 'm' && yourGender != 'f'
    【解决方案3】:

    function getGender(sensitive){
      let gender;
      let pat = sensitive ? /[MF]/ : /[MF]/i;
      do
      {
        gender = prompt("Enter your gender (M / F)", '');
      } while( !gender.match(pat) );
      return gender;
    }
    
    /* Case sensitive
    getGender(sensitive=true);
    //*/
    
    //* Not case sensitive
    getGender(sensitive=false);
    //*/

    【讨论】:

    • 你知道如何让提示符不区分大小写吗?即toLowerCase?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-23
    • 2022-01-04
    • 2022-05-23
    相关资源
    最近更新 更多