无法在此FizzBu​​zz代码中呈现提示?

时间:2015-06-12 01:58:54

标签: javascript

我是编程新手,并且已经在这个FizzBu​​zz问题上工作了几天。虽然我觉得我理解如何解决FizzBu​​zz,但我无法在页面加载时呈现提示。 我基本上试图将用户输入的数字输入到提示符中并对其运行for循环但是在我编写for循环和条件语句之后,当重新加载页面时,提示会停止弹出。 我感到愚蠢,因为这似乎是一个简单的解决方案的问题,我已经搜索过,但我还没有找到类似这个问题的东西。我将包括我的jsfiddle。谢谢!

http://jsfiddle.net/eh_sisyphus/bxqhuktk/5/

    $(document).ready(function() {

    function FizzBuzz() {

      var myPrompt = parseInt(prompt("What number would you like?"),   0);

      for (var i = 0; i<=myPrompt; i++) {

          if (i%3 === 0) {

             return "Fizz";

          } else if (i%5 === 0) {

            return "Buzz";

          } else (i%3 != 0 && i%5 != 0){

            return i;

          }
       }  
     }
    });

2 个答案:

答案 0 :(得分:2)

这是解决方案:

Fiddle

JS

function FizzBuzz() {

    var myPrompt = parseInt(prompt("What number would you like?"));

    for (var i = 0; i <= myPrompt; i++) {

        if (i % 3 === 0) {

             console.log("Fizz");

        } else if (i % 5 === 0) {

            console.log("Buzz");

        } else if ((i % 3 != 0) && (i % 5 != 0)) {

            console.log(i);

        }
    }

}


$(document).ready(function () {
  console.log(FizzBuzz());

});

解释

你有几个错误:

  1. 没有包含jQuery:你正在使用名为jQuery的第三方库来触发“onDOMContentLoaded”事件 - $(document).ready
  2. 没有调用该函数 - 你已声明它但从未使用它
  3. 在你最后的其他陈述中忘记了'if'
  4. 将'0'传递给parseInt意味着它会将您的输入转换为基数0(零到零)
  5. 在循环中使用return - 返回将立即退出函数,因此循环只有一次迭代。
  6. 您将在Windows或cmd + alt + i - &gt;上的控制台(F12 - &gt;控制台)中看到您的输出。 mac上的控制台

答案 1 :(得分:0)

else语句不带参数,只写为else { ... }。您需要使用else if以外的else

} else (i%3 != 0 && i%5 != 0){

应该是:

} else if (i%3 != 0 && i%5 != 0){

除此之外,您需要执行函数FizzBuzz()

function FizzBuzz() {
    ...
}
FizzBuzz();

既然你回来了,你可能想做:

console.log(FizzBuzz());

查看FizzBuzz()返回的值。

注意:这将解决您正在运行的功能和显示prompt的问题。虽然,您的解决方案无法解决 FizzBu​​zz 问题。主要是因为您从0 to n循环,一旦您点击第一个if,将返回true Fizz并且该函数将退出。您永远不会得到BuzzFizzBuzz。不要使用return,而是使用console.log()打印出值。

最后,为了获得"FizzBuzz",您可以将if(i%15 === 0)作为第一个条件,其余为else if

   for (var i = 0; i<=myPrompt; i++) {

        if(i%15 === 0) {

            console.log("FizzBuzz");

        } else if (i%3 === 0) {

            console.log("Fizz");

        } else if (i%5 === 0) {

            console.log("Buzz");

        } else if(i%3 != 0 && i%5 != 0){ // Note you can change this to just "else".

            console.log(i);

        }
  }

Fiddle Example