如果输入是NaN,如何进行提示重复

时间:2014-04-02 22:35:54

标签: javascript prompt nan

我有这个快速的代码段:

var sQuantity = 0
if (sQuantity = 0 || isNaN(sQuantity)) {
  (sQuantity = parseInt(prompt("Let's begin compiling our student database. How many students would you like to enter?", "Number of Students")));
  (sQuantity = 1);
}

但是当我像这样运行时,提示并没有出现。显然,我错误地认为这应该如何运作。如果未输入Integer,如何提示弹出?我可能会发生这种错误...

2 个答案:

答案 0 :(得分:1)

这是一种可行的方法:

var sQuantity;
do {
  sQuantity = parseInt(prompt('Prompt message', 'Default prompt value'), 10);
} while (!sQuantity); 

您的问题中显示的代码有两个原因。首先,您实际上并未检查sQuantity是否等于0 - 您为其分配 0(使用= 0;至少应该== 0 )。确切地说,实际分配的是0 || isNaN(sQuantity)的结果。它是false - 因为sQuantity在分配时等于0,而不是NaN

但更重要的是第二个缺陷:在为您分配了一些值之后立即用sQuantity检查if值是没有意义的。你知道它等于0,对吗?

唯一有意义的情况是使用循环:首先为变量赋值(作为prompt的结果),然后在循环条件中检查此值

在我的示例中,我使用了do-while循环,因为您显然必须向用户显示prompt至少一次。使用!sQuantity子句,我会同时检查NaN0:这些是parseInt可以返回的唯一值假值。

答案 1 :(得分:1)

我可以制作最短的工作代码:

var nbr;
while (isNaN(nbr = prompt("message", "test")));

小提琴:http://jsfiddle.net/rh2Uq/1/