【发布时间】:2017-02-26 15:22:00
【问题描述】:
我正在使用JS Bin网站来写这个。
当我输入错误的(数字)输入时,循环只会触发一次:
function isInputLeapYear()
{
var year = -1;
var inputOk = true;
do{
year = prompt("Please enter a year to check if it is a leap year \ninput year between 0-9999");
if(year < 0 || 9999 < year) // check input
{
inputOk = false;
alert("\""+year+"\" is not a good year. \nThe input needs to be between 0-9999");
};
}while(inputOk === false);
....
}
【问题讨论】:
-
prompt函数返回string,而不是number。你可以看看parseInt函数。 -
您需要添加一个
else { inputOk = true; },否则您的代码对我来说可以正常工作。 -
@DarinDimitrov 是对的。使用 parseInt 函数。年份 = parseInt(输入) .
-
@DarinDimitrov 它可能会返回一个字符串,但是当字符串与带有
<的数字进行比较时,它们会被强制转换为数字。所以那部分很好。 -
虽然像@DarinDimitrov 建议的那样明确转换为数字会好,但这不是问题。当另一个操作数是数字时,
<会将year转换为数字(如上例所示)。
标签: javascript do-while prompt