2017-10-16 9 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

do-whileループはwhileループと同じではありません。構文がわかりにくいようです。 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; 
} 
+0

これが機能します、ありがとうございます。はい、それはより単純化されているはずです、助けを感謝します。プロンプトで大文字小文字を区別しないようにする方法を知っていますか?すなわち、LowCase? –

+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

知っていますか?すなわち、LowCase? –

+0

&& yourGender!= 'm' && yourGender!= 'f'の場合は – 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

プロンプトで大文字小文字を区別しないようにする方法を知っていますか?すなわち、LowCase? –

+0

鈍感なケースを表示するように更新しました。 –

関連する問題