JavaScript-输入不是数字时提示
我想问用户一个数字,而他的答案不是一个数字,这个问题将作为一个警报框不断循环 我试着用while-loop和isNaN这样做,但我做错了什么 这是我的Js: isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它 如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发JavaScript-输入不是数字时提示,javascript,loops,Javascript,Loops,我想问用户一个数字,而他的答案不是一个数字,这个问题将作为一个警报框不断循环 我试着用while-loop和isNaN这样做,但我做错了什么 这是我的Js: isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它 如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发 var correct = false; do { var question =
var correct = false;
do {
var question = prompt("guess the number?");
if (!isNaN(question)) {
document.write("your number is " + question);
correct = true;
break;
}
} while (!correct);
isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它
如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发
var correct = false;
do {
var question = prompt("guess the number?");
if (!isNaN(question)) {
document.write("your number is " + question);
correct = true;
break;
}
} while (!correct);
是一个有一些特殊规则的函数。您应该首先尝试将输入解析为一个数字,然后对该结果使用isNaN。如果从字符串到数字的转换失败,Number返回NaN
变量输入1=1234;
var输入2=abcd;
alertisNaNNumberinput1;
警报为nannumberinput2 是一个有一些特殊规则的函数。您应该首先尝试将输入解析为一个数字,然后对该结果使用isNaN。如果从字符串到数字的转换失败,Number返回NaN
变量输入1=1234;
var输入2=abcd;
alertisNaNNumberinput1;
警报为nannumberinput2 几个错误
isNaN是一个函数:isNaNNaN返回true,而isNaN1或isNaN1返回false
prompt总是返回一个字符串,而不是NaN
您可以使用将提示结果转换为数字,然后检查是否为NaN
也就是说,如果您只是尝试查看字符串是否只包含数字,则isNaN不适合,因为空格或\n\t将全部转换为0并给出误报
A会做正确的事
var question = prompt("guess the number?");
var containsOnlyDigits = /^[0-9]+$/; // one or more of digits 0 to 9
if (containsOnlyDigits.test(question)) {
...
几个错误
isNaN是一个函数:isNaNNaN返回true,而isNaN1或isNaN1返回false
prompt总是返回一个字符串,而不是NaN
您可以使用将提示结果转换为数字,然后检查是否为NaN
也就是说,如果您只是尝试查看字符串是否只包含数字,则isNaN不适合,因为空格或\n\t将全部转换为0并给出误报
A会做正确的事
var question = prompt("guess the number?");
var containsOnlyDigits = /^[0-9]+$/; // one or more of digits 0 to 9
if (containsOnlyDigits.test(question)) {
...
我将通过以下示例为您提供一些提示:
<html>
<head>
<title></title>
<script>
var answer = "";
do {
answer = prompt("guess the number?");
} while(!isNumber(answer));
document.write("your number is " + answer);
function isNumber(value) {
var numberPattern = /^[0-9]+$/; // one or more of digits 0 to 9
return numberPattern.test(value);
}
</script>
</head>
<body>
</body>
示例如下:
无需创建名为correct的附加变量来检查条件是否为true或false,因为您已清除了条件isNananswer,因此while应在isNananswer时使用该条件
当您编写代码时,您应该写得尽可能干净,如果您正在保存提示符的结果,那么命名变量answer会更清楚,因为您保存的是答案而不是问题,这是一个方法调用
我将通过以下示例为您提供一些提示:
<html>
<head>
<title></title>
<script>
var answer = "";
do {
answer = prompt("guess the number?");
} while(!isNumber(answer));
document.write("your number is " + answer);
function isNumber(value) {
var numberPattern = /^[0-9]+$/; // one or more of digits 0 to 9
return numberPattern.test(value);
}
</script>
</head>
<body>
</body>
示例如下:
无需创建名为correct的附加变量来检查条件是否为true或false,因为您已清除了条件isNananswer,因此while应在isNananswer时使用该条件
当您编写代码时,您应该写得尽可能干净,如果您正在保存提示符的结果,那么命名变量answer会更清楚,因为您保存的是答案而不是问题,这是一个方法调用
如上所述,isNan是一个函数,它获取一个参数作为其输入
在isNan中进行测试之前,您不必将提示符转换为数字,正如您在文档中看到的那样,它也可以接受字符串
该函数将在后台内部执行转换:
你可以把isNaN想象成:
isNaN = function(value) {
Number.isNaN(Number(value));
}
以下是一段代码片段,可供您使用:
var correct=false;
做{
var answer=提示猜测数字?;
//isNaN函数获取一个数字参数
//您还需要检查是否有值。
//如果用户单击no ESC,您将得到null
如果回答&&!是NanAnswer{
//一旦加载文档,您就无法对其进行写入。
//它将清除页面中以前的任何内容
document.writey您的号码是+答案;
正确=正确;
打破
}
}一会儿!对的
如上所述,isNan是一个函数,它获取一个参数作为其输入
在isNan中进行测试之前,您不必将提示符转换为数字,正如您在文档中看到的那样,它也可以接受字符串
该函数将在后台内部执行转换:
你可以把isNaN想象成:
isNaN = function(value) {
Number.isNaN(Number(value));
}
以下是一段代码片段,可供您使用:
v
ar正确=错误;
做{
var answer=提示猜测数字?;
//isNaN函数获取一个数字参数
//您还需要检查是否有值。
//如果用户单击no ESC,您将得到null
如果回答&&!是NanAnswer{
//一旦加载文档,您就无法对其进行写入。
//它将清除页面中以前的任何内容
document.writey您的号码是+答案;
正确=正确;
打破
}
}一会儿!对的
下面是一个类似的解决方案: 因为让numTrue=false!numTrue;{ var question=promptGuess the Number!,Number; numTrue=!isNaNquestion; }
document.writey您的号码是+问题 下面是一个类似的解决方案: 因为让numTrue=false!numTrue;{ var question=promptGuess the Number!,Number; numTrue=!isNaNquestion; }
document.writey您的号码是+问题;isNaN是一个函数!哦,你说得对。我把它改成了isNaN,但还是不起作用。为什么我在这个问题上得了-1分?有人能解释一下吗?isNaN是一个函数!哦,你说得对。我把它改成了isNaN,但还是不起作用。为什么我在这个问题上得了-1分?谁能解释一下吗?谢谢!你能解释一下为什么你在循环外声明var答案,然后在循环内再次调用它吗?而不是在循环中声明变量?thx@xec如果答案是他在问题中所写的数字,而他的答案不是数字,则循环将运行一次。问题将作为警报框继续循环。@CodeChunk edited,没有必要将其声明在其范围之外,哪个是while循环?你能更详细地解释一下在循环外还是在循环内声明变量吗?@CodeChunk对于这个例子没有多大区别,在其他语言中,你不能访问超出其严格范围的变量,这意味着如果答案在循环内,你就不能访问while外的变量,但现在不适用。谢谢!你能解释一下为什么你在循环外声明var答案,然后在循环内再次调用它吗?而不是在循环中声明变量?thx@xec如果答案是他在问题中所写的数字,而他的答案不是数字,则循环将运行一次。问题将作为警报框继续循环。@CodeChunk edited,没有必要将其声明在其范围之外,哪个是while循环?你能更详细地解释一下在循环外还是在循环内声明变量吗?@CodeChunk对于这个例子没有多大区别,在其他语言中,你不能访问超出其严格范围的变量,这意味着如果答案在循环内,你就不能访问while外的变量,但现在不适用。