0

所以我试图用 Javascript 制作一个简单的斐波那契生成器,但它似乎不起作用!我在我的浏览器(Chrome)和 JSFiddle 中都尝试过,但仍然无法正常工作。任何人都知道这里发生了什么?似乎它甚至没有进入该功能,因为没有弹出警报。

<html>
    <head>
        <script type='text/javascript'>

function fib()
{
    alert('In fib function');
    var c = parseInt(document.getElementById('f').value, 10);
    var o = document.getElementById('o');

    var x = 0;
    var y = 1;
    var z = 0;

    for (i = 0; i < 0; i++)
    {
        o.innerHTML += '\n' + x;
        z = x + y;
        x = y;
        y = z;
    }
    return false;
}​

        </script>

    </head>
    <body>
        <form onsubmit='return fib()'>
            <input id='f' type='text'></input>
            <input type='button' value='Submit' onClick='return fib()'
        <pre id='o'></pre>
    </body>
</html>
4

4 回答 4

0
  1. 输入元素不应有结束标记。该元素是“独立的”,本质上应该写为<input.../>or <input...>
  2. 第二个输入元素没有关闭。>应该加到最后。

  3. for (i = 0; i < 0; i++) {

此循环不会执行,因为i如果您最初将其设置为 0 并从那里递增,则它永远不会小于 0。

这是一个修订版——http://jsfiddle.net/wrg8Z/

于 2012-09-10T22:59:30.703 回答
0

您的代码有两个问题。首先,正如大卫指出的那样,您实际上不会打印出任何数字,因为循环永远不会执行。其次,你忘记关闭你的第一个<input>标签,它消耗了<pre>标签,这是你试图传递输出的地方。看到这个更新的小提琴有一个工作输出:

http://jsfiddle.net/6neQU/

于 2012-09-10T23:02:57.897 回答
0

正如大卫所说,由于增量条件无效,因此您拥有的 for 循环将无法工作。当我 = 0; 你说的是“增加 i 直到它小于 0”这不会发生。

于 2012-09-10T23:04:45.293 回答
0

在您的代码中:

> function fib() {
>     alert('In fib function');
>     var c = parseInt(document.getElementById('f').value, 10);

c未使用。

>     var o = document.getElementById('o');
> 
>     var x = 0;
>     var y = 1;
>     var z = 0;
> 
>     for (i = 0; i < 0; i++)

i未声明,因此在到达此行时变为全局。您正在从 0 迭代到 0,因此循环永远不会执行。

于 2012-09-10T23:11:29.123 回答