2016-08-30 3 views
0

Ich bin in JQuery einige Probleme mit meiner for() Schleife.For-Schleife JQuery gibt die gleiche ID-4-mal

Ich habe den folgenden Code:

for (i = 0; i < Object.keys(roster).length; i++) { 
    fillMatchRoster(getUserEligible(roster[i].user_id), findUser(roster[i].user_id), findGamertag(roster[i].user_id)); 

    // Shows 4 different ID's 
    alert(roster[i].user_id); 

    // Outputs the same ID 4 times 
    if(findGamertag(roster[i].user_id) != "") { 
      $('.match_create_roster_playing').html("<input type='checkbox' value='" + roster[i].user_id + "'>"); 
    } 
} 

Es sollte Ausgang 4 verschiedene IDs als Werte Checkbox, sondern ich sehe, 4 gleich.

HTML-Ausgabe:

HTML output

UPDATE:

findGamertag():

function findGamertag(id) { 
    var user = ""; 

    $.ajax({ 

     url: '/data/user_info.php', 
     data: {user: id}, 
     dataType: 'json', 
     async: false, 
     type: 'post', 
     success: function(json) { 

      user = json.gamertag; 

     }, 
     error: function(ts) { 
      console.log("Error: " + ts.responseText); 
     } 
    }); 

    return user; 
} 
+0

Ich vermute, dass 'findGamertag' einen Ajax-Anruf macht? –

+0

@ freedomn-m Das ist richtig – Chris

+0

den gleichen Code kann versuchen, durch die if-Anweisung Roster ändern! = [] –

Antwort

2

kann ich diesen Wert setzen 6 ist die letzte ID des Benutzers. Das passiert, weil Sie das HTML jedes td Elements mit dem angegebenen Klassennamen überschreiben. Zeile 9 ersetzt bei jeder Iteration buchstäblich den inneren HTML-Code.

By adding .eq es wie das Ergebnis scheint korrekt ist.

+0

Das scheint der Trick gewesen zu sein! Können Sie erklären, was es tut? – Chris

+1

Durch Aufruf von '$ ('. Match_create_roster_playing')' erhältst du alle Elemente mit dieser Klasse. Gefolgt von 'html()' ** ersetzen Sie bei jeder Iteration das innere HTML ** aller Elemente durch neue Werte. Das Hinzufügen von '.eq' hilft, denn bei jeder Iteration nehme ich die erste Zeile und aktualisiere sie in html, dann in der zweiten Zeile und so weiter. –

+0

Ahhh, das wusste ich nicht! Danke vielmals! – Chris

Verwandte Themen