2017-02-27 207 views
0

我還沒有真正使用循環之前,我似乎無法弄清楚爲什麼我的代碼不工作。希望有人幫助我指出正確的方向。JavaScript for循環不工作?

return firebase.database().ref('Users/' + uid + "/PDR").once('value').then(function display(dataSnapshot) { 

    //Number of times the loop should run returning a value 
    var number = dataSnapshot.val().Total; 

    var i; 
    for (i = 1; i < number; i++) { 

    //Each time loop runs changes Firebase reference by "1" 
    return firebase.database().ref('/Users/' + uid + "/PDR/" + i).once('value').then(function display(dataSnapshot) { 

     var num = dataSnapshot.val().number; 
     var dateFrom = dataSnapshot.val().dateFrom; 
     var dateTo = dataSnapshot.val().dateTo; 
     var dbActivity = dataSnapshot.val().activity; 

     //Each loop adds different data to table 
     document.getElementById("PDRTable").innerHTML += '<tr><td>' + num + '</td><td>' + dateFrom + '</td><td>' + dateTo + '</td><td>' + dbActivity + '</td></tr>' 

    }) 
    } 
}) 

我試圖從我的Firebase後端提取數據並將其顯示在表中,目前它只運行一次。

感謝您的任何幫助和建議!

+6

你必須在'for'環路'return'語句,所以它從功能第一次迭代期間返回。 – Barmar

+0

謝謝,甚至沒有時鐘,這將是原因。所有工作現在! – imconnor

回答

0

不確定dataSnapshot對象中發生了什麼,但在javascript調試中的第一步是添加alert(「Here」);在你的代碼,看看有什麼(如果有的話)正在返回

//Number of times the loop should run returning a value 
    var number = dataSnapshot.val().Total;  

    var i; 
    for (i = 1; i < number; i++){ 
    alert("Here " + i); //Show me the loop variable 
    //Each time loop runs changes Firebase reference by "1" 
    return firebase.database().ref('/Users/' + uid + "/PDR/" + i).once('value').then(function display(dataSnapshot) { 
    alert(num); 
    alert(dateFrom); 
    alert(dateTo); 
    var num = dataSnapshot.val().number; 
    var dateFrom = dataSnapshot.val().dateFrom; 
    var dateTo = dataSnapshot.val().dateTo; 
    var dbActivity = dataSnapshot.val().activity;        

    //Each loop adds different data to table 
    document.getElementById("PDRTable").innerHTML += '<tr><td>'+ num +'</td><td>'+ dateFrom + '</td><td>'+ dateTo +'</td><td>'+ dbActivity +'</td></tr>' 
+0

當然有東西被退回;有一個返回聲明。 (複雜的承諾的東西。) –

+1

重點是教他釣魚。如果他使用警報調試方法,他應該注意到,一旦返回被觸發,沒有其他事件會被通知瀏覽器。 –

+1

雖然我同意你的思考過程,但這不是一個答案。 – jdmdevdotnet