2014-03-19 23 views
1

我終於想出了代碼,它從文件中獲取json數據,現在我正在嘗試爲此創建一些函數。看看代碼:第一次使用後JavaScript函數的參數變得不明確

var comments = []; 

function printComment(comment) { 

var $comment_div = "<div class='comment'><p class='comment-text'>"+comment.comment_body+"</p><img class='comment-photo' src='"+comment.comment_url+"'/><a rel='"+comment.comment_from+"' class='name' href='"+comment.comment_url+"'>"+comment.comment_user+" via <i class='fa'></i></a></div>"; 

$($comment_div).appendTo('#comments-content'); 

}; 

var i = 0 

$(function() { 

$.getJSON("js/comments.js", function(data) { 

    comments = data.comments; 

    for(i; i < 3; i++) { 

     printComment(comments[i]); 
     console.log(i); 

    } 

    setInterval(function() { 

     if (i > comments.length) { 

      i = 0; 

     } else { 

      i++; 
      printComment(comments[i]); 
     } 

     console.log(i); 

    }, 5000); 

}); 

}); 

問題是全局定義功能中的「爲」沒有問題循環觸發,但在setInterval的控制檯將返回「評論功能(這是功能printComment的說法)是未定義」。你能指導我還是隻回答我做錯了什麼?

乾杯!

+0

爲什麼你有'for'循環**和**'setInterval'?我錯過了明顯的東西嗎? – Ian

+0

這是打印3個第一個註釋,然後setInterval每5秒打印一個下一個 – mkolodziejczak

回答

1

我相信問題是,你的if條件重置i只有i > comments.length,但是,如果i == comments.length(甚至i == comment.length - 1),那麼你在else塊代碼會試圖超過數組的邊界接入項目。我認爲你正在尋找這樣的東西:

setInterval(function() { 
    if (i >= comments.length) { 
     i = 0; 
    } 

    printComment(comments[i++]); 
}, 5000); 

雖然你的代碼很混亂。很難準確地告訴你要在這裏完成什麼。

+0

好吧,我試圖得到一個帶有數組的json文件,然後打印該數組的前三個項目,然後每5個secons打印下一個。當他們全部打印時,應該從第一項打印。想法是一次只有3個項目,所以它會刪除一個元素,並打印下一個 – mkolodziejczak

+0

@szamantg我沒有看到你要刪除舊評論,但我很高興我可以幫助。 –

+0

這是代碼的其餘部分,我所需要的只是如何做到這一點。再一次感謝你! – mkolodziejczak

相關問題