2017-02-27 8 views
0

Ich habe nicht wirklich Loops verwendet und ich kann nicht herausfinden, warum mein Code nicht funktioniert. Hatte gehofft, dass mir jemand half, mir in die richtige Richtung zu zeigen.JavaScript für Schleife funktioniert nicht?

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>' 

    }) 
    } 
}) 

Ich versuche, Daten aus meinem Firebase-Backend zu ziehen und es in einer Tabelle anzuzeigen, derzeit wird es nur einmal ausgeführt.

Danke für jede Hilfe und Beratung!

+6

Sie haben in der 'for' Schleife eine' return' Anweisung zurückgegeben wird, so gibt es von der Funktion während der ersten Iteration. – Barmar

+0

Vielen Dank, nicht mal das wäre der Grund. Alles funktioniert jetzt! – imconnor

Antwort

0

Nicht sicher, was im dataSnapshot-Objekt vorgeht, aber der erste Schritt beim JavaScript-Debugging ist das Hinzufügen eines Alerts ("Here"); in Ihrem Code zu sehen, was (wenn überhaupt)

//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

Natürlich wird etwas zurückgegeben; Es gibt eine Rückmeldung. (Kompliziert durch das Versprechen Zeug.) –

+1

Der Punkt ist es, ihn zu angeln beizubringen. Wenn er die Alert-Debugging-Methode verwendet, sollte er bemerkt haben, dass, sobald die Rückkehr getroffen wird, nichts anderes auf den Browser aufmerksam gemacht wird. –

+1

Dies ist keine Antwort, obwohl ich mit Ihrem Gedankengang einverstanden bin. – jdmdevdotnet

Verwandte Themen