我循环遍历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();
};
答案 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++]);
}