2015-10-12 58 views
0

在Javascript中,我創建了一個函數,開始一個提示,然後開始一個循環,當用戶在提示框中輸入五次時結束循環。但是當我打開一個網頁時,提示框甚至不會出現。我引用了W3schools.com和developer.mozilla.org,但我一直無法找到我的問題的答案。還應該注意的是,當我在最後一個else語句之後調用infiniteLoop()時,代碼有效,但這種感覺是多餘的,所以我寧願不要擁有它,除非我能理解爲什麼它需要在那裏。這裏是我的代碼:我的Javascript循環不起作用

function infiniteLoop() { 
i= 0; 
var begin= prompt("Shall we begin?"); 
if (begin == "Yes") { 
    while (i < 5) { 
    var tryAgain= prompt("Are you sure?"); 
    if (tryAgain == "Yes") { 
     i++; 

    } 

    else { 
     infiniteLoop(); 
     } 
    } 

} 

else { 
    infiniteLoop(); 
} 
} 
+1

你忘了打電話給負載的功能infiniteLoop()。 – Flash

+1

代碼不起作用,因爲您已定義該函數,但未在其定義之外的任何地方調用該函數。這就是爲什麼當你在定義之外的任何地方調用函數「infiniteLoop()」時,它將開始工作。 – molecule

回答

2

你需要調用的函數窗口onload事件。

window.onload = function(){ 
    infiniteLoop(); 
} 

,或者,如果你正在使用jQuery

$(function() { 
    infiniteLoop(); 
}); 
+1

謝謝。這完全滑了我的腦海。 –

1

提示框沒有出現,因爲您的網頁加載時沒有調用該函數。

加入infiniteLoop()聲明你的函數後。

例如

function infiniteLoop() { 
    i= 0; 
    var begin= prompt("Shall we begin?"); 
    if (begin == "Yes") { 
     while (i < 5) { 
      var tryAgain= prompt("Are you sure?"); 
      if (tryAgain == "Yes") { 
       i++; 
      } 
      else { 
       infiniteLoop(); 
      } 
     } 
    } 
    else { 
     infiniteLoop(); 
    } 
} 
// Initial call 
infiniteLoop(); 
0

它的作品,寫的5倍「是」(區分大小寫)它完成,否則它的工作原理無限,不要忘記調用infiniteLoop()

0

清理,工作

(function infiniteLoop() { 
    var begin = prompt("Shall we begin?"); 

    if (begin === "Yes") { 
    var i= 0; 
    while (i < 5) { 
     var tryAgain = prompt("Are you sure?"); 
     if (tryAgain === "Yes") { 
     i++; 
     } 

     else { 
     infiniteLoop(); 
     } 
    } 
    } 

    else { 
    infiniteLoop(); 
    } 
})()