我在JQuery中使用for()
循环时遇到了一些麻烦。
我有以下代码:
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输出:
更新:
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 :(得分:2)
我可以打赌,值6是最后一个用户的ID。发生这种情况,导致覆盖给定类名的每个td
元素的HTML。第9行在每次迭代时都会替换内部html。
By adding .eq
似乎结果是正确的。