不使用提示执行while循环。Javascript
我正在用JS-Bin网站写这篇文章 当我给出错误(数字)输入时,循环只触发一次:不使用提示执行while循环。Javascript,javascript,do-while,prompt,Javascript,Do While,Prompt,我正在用JS-Bin网站写这篇文章 当我给出错误(数字)输入时,循环只触发一次: 函数isInputLeapYear() { 风险值年份=-1; var inputOk=true; 做{ 年份=提示(“请输入年份以检查是否为闰年\n输入介于0-9999之间的年份”); 如果(年份
函数isInputLeapYear()
{
风险值年份=-1;
var inputOk=true;
做{
年份=提示(“请输入年份以检查是否为闰年\n输入介于0-9999之间的年份”);
如果(年份<0 | | 9999
将varinoutOK=true
移动到循环中,在再次提示之前重置
function isInputLeapYear()
{
var year = -1;
do {
var inputOk = true;
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);
....
}
函数isInputLeapYear()
{
风险值年份=-1;
做{
var inputOk=true;
年份=提示(“请输入年份以检查是否为闰年\n输入介于0-9999之间的年份”);
如果(年份<0 | | 9999
函数的提示符
返回的是字符串
,而不是数字
。您可以看看这个函数。您需要添加一个else{inputOk=true;}
,否则您的代码对我来说运行良好。@DarinDimitrov是对的。使用parseInt函数。year=parseInt(input)。@DarinDimitrov它可能返回一个字符串,但是当字符串与带有的数字进行比较时,同时按照@DarinDimitrov的建议显式转换为数字会很好,这不是问题<代码>代码转储不是有用的答案。说出你改变了什么,以及为什么。@T.J.Crowder感谢你不知道。我编辑了答案。代码转储不是有用的答案。说说你做了什么,为什么。(并合理地格式化代码。)还要注意,您已更改了范围。您不能将year<0
更改为year>0
来反转该条件。现在是年>=0
。
function isInputLeapYear()
{
var year = -1;
do {
var inputOk = true;
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);
....
}
function isInputLeapYear()
{
var year = -1;
var inputOk = false;
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 = True;
else
{
alert("\""+year+"\" is not a good year. \nThe input needs to be between 0-9999");
}
};
}while(inputOk === false);
....
}