2016-08-30 13 views
0

私のfor()ループがJQueryのループに問題があります。forループJQueryは同じIDを4回出力します

は、私は次のコードを持っている:

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 + "'>"); 
    } 
} 

それを出力すべき4つの異なるIDのチェックボックスの値としての代わりに、私は4同じを参照してください。

HTML出力:

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

私は 'findGamertag'がajax呼び出しを行うと思いますか? –

+0

@ freedomn-mそれは正しいですか? – Chris

+0

はif文を変更することで同じコードを試すことができます![] –

答えて

2

私はその値6は、最後のユーザーのIDで賭けることができます。その場合、の場合、指定されたクラス名を持つすべてのtd要素のHTMLが上書きされます。 9行目は、繰り返しごとに内部HTMLを文字通り置き換えます。

By adding .eq結果が正しいようです。

+0

それはトリックをしたようだ!あなたはそれが何をしているのか説明できますか? – Chris

+1

'$( '。match_create_roster_playing')'を呼び出すことによって、そのクラスを持つすべての要素を取得します。 'html()' **の後には、すべての要素の内部HTML **を繰り返しごとに新しい値に置き換えます。 '.eq'を追加すると、最初の行を取り、それをhtml、次に2番目の行などを更新するたびに繰り返します。 –

+0

ああ、私はそのことについて知らなかった!どうもありがとう! – Chris

関連する問題