我有以下快速代码段:
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);
}
但是当我这样运行它时,提示根本没有出现。显然我弄错了它应该如何工作。如果未输入整数,如何提示我继续弹出?我可能正在处理所有这些错误...
最佳答案
这是一种可能的方法:
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
可能返回的唯一虚假值。