因为循环过多循环

时间:2014-10-02 21:09:31

标签: javascript jquery html for-loop

我循环遍历for循环以执行简单的计算。每次迭代的结果都存储在一个数组中。数组具有正确数量的元素,但输出具有指数过多的元素。

HTML:

<script type="text/javascript" src="Fibonacci.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>   
<script>
(function($) {
    $.fn.writeText = function(content) {
        var contentArray = content,
        current = 0,
        elem = this;
    setInterval(function() {
        if(current < contentArray.length) {
            elem.text(elem.text() + contentArray[current++]);                
            }
        }, 1000);
    };    
})(jQuery); 
</script>
</head>
<body>  
<script>
    document.write(getArray());
$(document).ready(function($){      
    var contentArray = getArray();
    $('#calculations').writeText(contentArray);
}); 
</script>
<h3>Fibonacci Sequence:</h3>
<p id='calculations'></p>   

外部JS:

var result;
var x = 0;
var y = 1;
var resultArray = [x,y];

function FibonacciCalculation(){
    for(var i = 2; i < 5; i++){     
        result = x + y;
        x = y;
        y = result;
        resultArray.push(result);
    }
}

function getArray(){
    FibonacciCalculation();
    return resultArray;
}

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

2 个答案:

答案 0 :(得分:1)

每次运行resultArray功能时,您需要重置FibonacciCalculation

function FibonacciCalculation() {
   resultArray = [x, y]
   // ...

答案 1 :(得分:0)

你把getArray调用了html的<script>部分两次,所以几次调用resultArray(第2行和第4行)。

<script>
    document.write(getArray());
    $(document).ready(function($){      
        var contentArray = getArray();
        $('#calculations').writeText(contentArray);
    }); 
</script>

此外,您应该更正if条件中的<>,因为它似乎永远都是真的。

 if(current < contentArray.length) {
     elem.text(elem.text() + contentArray[current++]);                
 }