我对javascript很新。我想制作一个快速的程序,使用我父亲教给我的公式,根据他们的年龄生成最小的年龄。在我的代码中我有一个条件,如果我的var(dateage)不是数字,则要求用户输入一个数字。我希望程序然后重新询问变量赋值提示,直到给出一个数字。
var dateage = prompt("How old are you?");
if(dateage >= 14){
dateage = dateage/2 + 7;
alert("The youngest you can date is " + dateage)
} else if(isNaN(dateage)){
alert("Please enter in a number");
} else
alert("You're too young to date.");
您可以看到,如果日期不是数字,则会提醒用户。此时,我希望再次出现提示,询问用户的年龄。我怎么能这样做?
答案 0 :(得分:2)
将它放在函数中,以便重新调用
function checkAge() {
var dateage = prompt("How old are you?");
if(dateage >= 14){
dateage = dateage/2 + 7;
alert("The youngest you can date is " + dateage)
} else if(isNaN(dateage)){
if (confirm("Please enter in a number")) checkAge();
} else
alert("You're too young to date.");
}
checkAge();
我使用confirm
进行重新检查,因为这意味着您可以更轻松地摆脱无限循环的情况。如果您不想污染命名空间,可以将其写为命名 IIFE ,如果您不想进行堆栈,则可以通过 setTimeout <调用< / em>的
答案 1 :(得分:1)
你可以将它放在一个函数中,只需继续调用函数:
function askAge(){
var dateage = prompt("How old are you?");
if(dateage >= 14){
dateage = dateage/2 + 7;
alert("The youngest you can date is " + dateage)
} else if(isNaN(dateage)){
alert("Please enter in a number");
askAge();
} else
alert("You're too young to date.");
}
askAge();
答案 2 :(得分:1)
将问题和输出包装在while循环中,仅在输入数字时断开
答案 3 :(得分:0)
就个人而言,我喜欢“可重启”功能如下:
(function() {
var restart = arguments.callee; // "magic" property refers to current function
if( somecondition) setTimeout(restart,1);
else {
// do actual stuff
}
})();
setTimeout
释放了当前的调用堆栈,否则如果您设法无限循环restart
,则可能会出现堆栈溢出错误。
答案 4 :(得分:0)
function checkAge() {
var dateage = prompt("How old are you?");
if(dateage >= 14){
dateage = dateage/2 + 7;
alert("The youngest you can date is " + dateage)
} else if(isNaN(dateage)){
if (confirm("Please enter in a number")) checkAge();
} else
alert("You're too young to date.");
}
checkAge();