2017-10-16 4 views
-1

Mein Skript soll den Benutzer aufgefordert, ein Geschlecht eingeben, wenn das Geschlecht ist entweder "M" oder "F" dann wird es zurückkehren. Wenn eine andere Eingabe erfolgt, muss die Eingabe fortgesetzt werden, bis einer der Werte eingegeben wird.JS: Promp Thet Benutzer für die Eingabe, bis sie einen gültigen Wert geben in Parameter

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

    } 
} 

Antwort

0

Eine do-while Schleife ist nicht das gleiche wie eine while Schleife, es sieht aus wie Sie ihre Syntax verwechseln. Hier ist ein Beispiel für die Verwendung aus dem MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while

Wenn Sie mit logischen Operatoren "true" oder "false" überprüfen, müssen Sie die Variable für jede Bedingung überprüfen. Ihre Funktion sollte viel einfacher sein:

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

    return yourGender; 
} 
+0

Das funktioniert, danke. Ja, es hätte einfacher sein sollen, schätze die Hilfe. Weißt du, wie man die Groß- und Kleinschreibung nicht beachtet? d. h. zuLowerCase? –

+0

@JimmieDavis Sicher, ich habe die Antwort mit '.toLowerCase()' aktualisiert. Sie müssen es nur am Ende der Eingabeaufforderung hinzufügen und dann die bedingte Prüfung für Kleinbuchstaben "m" und "f" ändern. – 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') 
} 

habe ich keine Ahnung, ob die Aufforderung Teil richtig, aber do-while-Teil wie das funktionieren soll.

+0

Wissen Sie, wie die prompte Fall unempfindlich zu machen? d. h. zuLowerCase? –

+0

einfach hinzufügen && yourGender! = 'M' && yourGender! = 'F' in der 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

Danke für die Hilfe, das hat funktioniert –

+0

Weißt du, wie man die Groß- und Kleinschreibung unsensibel macht? d. h. zuLowerCase? –

+0

Ich habe aktualisiert, um Ihnen den unempfindlichen Fall zu zeigen. –

Verwandte Themen