2017-10-16 135 views
-1

中指定的有效值。我的脚本应该提示用户输入性别,如果性别为'M'或'F',那么它将返回。如果有其他输入,则必须继续提示,直到输入任何值。JS:提示用户输入,直到他们输入在参数

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') { 

    } 
} 

回答

0

A do-while循环与while循环不一样,它看起来像你混淆了它们的语法。下面是使用MDN的一个例子:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while

另外,当使用逻辑运算符检查true或false时,您必须根据每个条件检查变量。你的功能应该是简单得多:

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

    return yourGender; 
} 
+0

This works,thank you。是的,它应该更简单,欣赏帮助。你知道如何使提示不区分大小写吗?即降低成本? –

+0

@JimmieDavis当然,我用'.toLowerCase()'更新了答案。您只需将其添加到提示的末尾,然后更改小写'm'和'f'的条件检查。 – skyline3000

0
function getGender() 
{ 
    var yourGender; //otherwise, 'while' doesn't know it 
    do 
    { 
     yourGender = prompt('Enter your gener (M/F)'); 
    } 
    while(yourGender != 'M' && yourGender != 'F') 
} 

我不知道如果提示部分是正确的,但千万,而部分应该像这样工作。

+0

你知道如何做出及时区分大小写?即降低成本? –

+0

只需添加&& yourGender!='m'&& yourGender!='f'if if – Birkl

0

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); 
 
//*/

+0

感谢您的帮助,此工作 –

+0

你知道如何使提示不区分大小写吗?即降低成本? –

+0

我更新后向您显示不敏感的情况。 – 2017-10-16 13:40:30