2016-04-27 14 views
-2

ifステートメントを宣言して、ユーザーが直接的な単語や文字の代わりに数字を入力したかどうかを確認すると、「有効な入力ではありません。 "しかし、メッセージが表示されたときにアラートボックスの[OK]をクリックすると、プロンプトに入力したメッセージが間違っていたり、番号が残っていたりすることはありません。特定のコードを繰り返す方法

数字以外の何かを入力すると、どうすればいいですか?数値を入力するまで「有効な入力ではなく、応答を数字で入力してください」と続きます。

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

は、whileループを使用しhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while またはおそらくdo .. whileループhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while – Hamms

+0

[コールバックの理解を深めるJavaScript内の関数](0120-933-066)。 – Ryan

答えて

0

promptを入れてチェックして、ループ内alert

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

代わりに関数に再帰的にアラートコールを表示します。

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

応答がOKになるまで繰り返しプロンプトが表示されます。

+0

なぜ、他の答えにokとマークしたのですか? – Prescol

関連する問題