我有这个快速的代码段:
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,如何提示弹出?我可能会发生这种错误...
答案 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
子句,我会同时检查NaN
和0
:这些是parseInt
可以返回的唯一值假值。
答案 1 :(得分:1)
我可以制作最短的工作代码:
var nbr;
while (isNaN(nbr = prompt("message", "test")));