2015-10-12 61 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(); 
    } 
})()