![](/img/trans.png)
[英]How do i run the second if statement once if the condition is met and then never again
[英]How do I “restart” if statement if a condition is met?
我對javascript很陌生。 我想用我父親教給我的公式,制作一個快速的程序,使一個人可以根據自己的年齡約會。 在我的代碼中,我有一個條件,如果我的var(日期)不是數字,則要求用戶輸入數字。 我希望程序然后重新詢問變量分配提示,直到給出數字為止。
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.");
您會看到,如果日期不是數字,則會提醒用戶。 此時,我希望再次出現提示,詢問用戶年齡。 我怎樣才能做到這一點?
將其置於函數中,以便您可以重新調用
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進行調用。
您可以將其放在函數中,然后繼續調用該函數:
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();
將問題包裝並在while循環中輸出,僅在輸入數字時中斷
就個人而言,我喜歡具有“可重啟”功能的外觀:
(function() {
var restart = arguments.callee; // "magic" property refers to current function
if( somecondition) setTimeout(restart,1);
else {
// do actual stuff
}
})();
setTimeout
釋放了當前的調用堆棧,否則,如果設法無限循環restart
,則可能會出現堆棧溢出錯誤。
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.