Javascript:条件が満たされたときにwhileループを中断して、Varがnullでない場合にループが終了するようにする方法(中断が機能しない)

Aug 23 2020
 var Age;
    
    Age = prompt("How old are you");
    
    while (Age === null){
        prompt("Please Cofirm You Name");
     if (Age > 0 ){
    
        break;
     }
    }

var Ageがnullでなくなるまで、ユーザーがループ状態になるようにしようとしています...私の目標は、プロンプトをキャンセルできず、入力する必要があるようにすることです。私は休憩を使ってみました。ifステートメントにありますが、機能していません。私が休憩を使うとき; ifステートメントでプロンプトを送信し続けますこれを行う別の方法がありますか、または何らかの理由でvar Ageの値がnullに等しいか(0より大きい整数を追加した場合でも)、修正方法を知っている人がいる場合プロンプトにユーザー入力するためのより良い方法があります

よろしくお願いします

回答

chethan7 Aug 23 2020 at 00:57
var Age = prompt("How old are you?");
Age = Number(Age);
while (isNaN(Age) || Age < 1) {
    Age = prompt("Please confirm your age.");
    Age = Number(Age);
}

プロンプトダイアログボックスでは、ユーザーは何でも入力できます。そのため、ユーザーが入力した値を数値として解析し、数値の場合は数値を返すNumber(Age)を使用して、ユーザーが数値を入力したかどうかを確認しようとしています。

つまり、ユーザーが入力した値が数値の場合、Ageには有効な数値が含まれます(ただし、負の値になる可能性があり、このユースケースでは無効です)。数値以外のものは、NaNまたは0のいずれかを与えます。

だから、あなたが書くときAge = Number(Age)

  • 年齢には適切な番号(正または負)が割り当てられている場合があります。
  • NaN(NaNはnot a number、JSのデータの一種と見なされます)、または
  • ユーザーがスペースを入力すると0になります。

whileループ条件では、ユーザーが入力した値が無効かどうかを確認しています。つまり、is Age not a number?またはis Age less than 1?

||返されるこの二つの条件間で使用される演算子trueこれらの2つの条件のいずれかに該当する場合は、(最初の条件がtrueの場合、実際には、それも第二の条件をチェックする気にしない、と単純にtrueを返します)。false両方の条件が偽の場合に返されます。

したがって、ユーザーが無効な入力(負の数、スペース、または文字列)を入力した場合、適切な値を入力するまでユーザーにプロンプ​​トを表示します。

Sascha Aug 23 2020 at 00:39

whileループには中断があります。この簡単な例を見てください。

let a = 2;
while (a <100) {
    console.log(a);
    a *= 2;
    if (a===16)
        break;
}

Hi-IloveSO Aug 23 2020 at 00:32

試してみてくださいdo-while

let age, age2;

do {
  age = prompt("How old are you?");
} while (age === "");

do {
  age2 = prompt("Please Cofirm Your age");
} while (age2 === "" || age2 !== age);