我刚开始学习javascript并在学习循环之后,如果我想写一个小程序,它询问用户的名字,它是空的或它是一个数字,它会一直询问用户,直到它是一个有效的名字。首先,如果我写一个字符串,它将写入html但是当程序试图运行循环时,它将无法写入有效名称。
var getName = prompt("What is your name? ");
if (getName === null || !isNaN(getName)){
while (getName !== null || isNaN(getName)){
alert("Invalid name, please try again");
getName = prompt("What is your name ? ");
if (getName !== null || isNaN(getName)){
document.write("Hello ", getName);
}
}
}else {
document.write("Hello ", getName);
}
为什么我的代码在进入循环后不起作用并且在输入有效的程序后仍然说“它不是一个有效的名称再试一次”?
答案 0 :(得分:1)
您可以使用条件getName === null || !isNaN(getName)
,请查看以下示例。
希望这有帮助。
var getName = null;
while (getName === null || !isNaN(getName)){
getName = prompt("What is your name ? ");
if (getName === null || !isNaN(getName)){
alert("Invalid name, please try again");
}else{
document.write("Hello ", getName);
}
}

答案 1 :(得分:0)
这是你在找什么?
var getName = prompt("What is your name ? ");
if (getName === null || !isNaN(getName)){
while (getName !== null || isNaN(getName)){
alert("Invalid name, please try again");
getName = prompt("What is your name ? ");
console.log(getName)
if (getName !== null || !isNaN(getName)){
document.write("Hello ", getName);
break;
}
}
}else {
document.write("Hello ", getName);
}
以下是JSFiddleLink
答案 2 :(得分:0)
while (getName !== null || isNaN(getName)){
alert("Invalid name, please try again");
getName = prompt("What is your name ? ");
if (getName !== null || isNaN(getName)){
document.write("Hello ", getName);
}
}
让我们比较你的while循环和if语句的条件,注意它们是如何完全相同的。
让我们说条件评估为真,所以你拥有的是
while(true) {
// do something
if (true){
// do something
}
}
因此,循环运行,if语句执行,但是你没有做任何事情来退出循环。
在这种情况下,你希望while循环条件为真,而if语句为false,反之亦然,所以
while(!(getName !== null || isNaN(getName)))
答案 3 :(得分:0)
这可能不是您正在寻找的东西,但这里是递归功能,可以满足您的需求。更简单的逻辑更简单一点。
function ask(){
name = prompt("What is your name?");
if(name != null && isNaN(name) & name != ""){
document.write("Hello ", name);
}else{
alert("Invalid name, please try again")
ask();
}
}
ask();

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>test</title>
<script type="text/javascript " src="script.js"></script>
</head>
<body>
</body>
</html>
&#13;