2016-04-27 17 views
-2

Wenn ich eine if-Anweisung deklarierte, um zu überprüfen, ob der Benutzer eine Zahl anstelle eines direkten Wortes oder Buchstabens eintippt, wird "Keine gültige Eingabe, bitte geben Sie Ihre Antwort als Zahl ein . " Aber wenn Sie einmal auf OK klicken, wenn die Meldung angezeigt wird, wird die Nachricht, die Sie in die Eingabeaufforderung eingegeben haben, die falsch war oder nicht, immer noch in das Objekt eingefügt.Wie man ein bestimmtes Stück Code wiederholt

Wie kann ich es so machen, wenn Sie etwas anderes als eine Zahl eingeben, wird es weiter sagen: "Keine gültige Eingabe, geben Sie bitte Ihre Antwort als eine Zahl" bis Sie eine Nummer eingeben?

var storeUsersInfo = []; 
var amountOfUsers = prompt("How many users do you want?"); 
amountOfUsers = parseInt(amountOfUsers); 
function returnUserInput() { 
    var askFirstName = prompt("What is your first name?"); 
    var askLastName = prompt("What is your last name" + " " +  titleCase(askFirstName) + "?"); 
    var askAge = prompt("How old are you" + " " + titleCase(askFirstName) + " " + titleCase(askLastName) + "?"); 

if(!Number.isInteger(Number.parseInt(askAge))) { 
    alert("Not a valid input, please enter your response as a number."); 
}; 

    return { 
     firstName: titleCase(askFirstName), 
     lastName: titleCase(askLastName), 
     age: askAge 
    }; 
}; 
function titleCase(string) { 
    return string.charAt(0).toUpperCase() + string.slice(1); 
}; 

for(var i = 0; i < amountOfUsers; i++) { 
    storeUsersInfo[i] = returnUserInput(); 
} 
console.log(storeUsersInfo); 
+1

eine while-Schleife verwenden https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while Oder vielleicht eine do .. while-Schleife https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do ... while – Hamms

+0

Mögliche Duplikate von [Getting ein besseres Verständnis von Callback Funktionen in JavaScript] (http://stackoverflow.com/questions/483073/getting-a-better-understanding-of-callback-functions-in-javascript) – Ryan

Antwort

0

Setzen Sie die prompt, Scheck- und alert in einer Schleife:

function returnUserInput() { 
    var askFirstName = prompt("What is your first name?"); 
    var askLastName = prompt("What is your last name" + " " +  titleCase(askFirstName) + "?"); 
    while (true) { 
     var askAge = prompt("How old are you" + " " + titleCase(askFirstName) 
          + " " + titleCase(askLastName) + "?"); 
     if(Number.isInteger(Number.parseInt(askAge))) break; // OK, exit loop 
     alert("Not a valid input, please enter your response as a number."); 
    }; 
    return { 
     firstName: titleCase(askFirstName), 
     lastName: titleCase(askLastName), 
     age: askAge 
    }; 
}; 
0

Zeigen Sie stattdessen erneut einen Warnaufruf für Ihre Funktion rekursiv.

if(!Number.isInteger(Number.parseInt(askAge))) { 
    returnUserInput() 
}; 

Es wird immer wieder aufgefordert, bis die Antwort in Ordnung ist.

+0

Warum haben Sie dann die andere Antwort als ok markiert? – Prescol

Verwandte Themen