问题描述
var Age;
Age = prompt("How old are you");
while (Age === null){
prompt("Please Cofirm You Name");
if (Age > 0 ){
break;
}
}
我正在尝试使它处于循环状态,直到var Age不为空...我的目标是使其成为一个循环,以便您不能取消提示而必须键入提示。我已经尝试过使用休息时间;在if语句中,但不起作用。 当我使用休息时;在if语句中,它将继续发送提示 还有另一种方法可以做到这一点 还是由于某种原因,var Age的值等于null(即使您添加一个大于0的整数),又是否有人知道如何修复它 有没有更好的方法可以让用户在提示中输入
谢谢您
解决方法
尝试使用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);
,
一个while循环有一个中断,请看这个简单的例子。
let a = 2;
while (a <100) {
console.log(a);
a *= 2;
if (a===16)
break;
}
,
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)来查看用户是否输入了数字,该数字试图将用户输入的值解析为数字,如果是数字则返回数字。
这意味着,如果用户输入的值是数字,则年龄将具有有效的数字(但可能为负,这对于我们的用例无效)。数字以外的任何数字都将给出NaN或0。
因此,当您写Age = Number(Age)
时,
- 可以为年龄分配适当的数字(正数或负数),或者
- NaN(NaN代表
not a number
,它被认为是一种 数据),或者 - 用户输入空格时为0。
在while循环条件下,我们正在检查用户输入的值是否无效。即is Age not a number?
或is Age less than 1?
。
如果这两个条件中的任何一个为true,则在这两个条件之间使用的||
运算符将返回true
(实际上,如果第一个条件为true,那么甚至不必费心检查第二个条件,并简单地返回true)。如果两个条件都为假,它将返回false
。
因此,如果用户输入了无效的输入(负数,空格或字符串),我们会提示用户直到输入正确的值。