我的 javascript 代码中的两个对象存在一些问题。
我的第一个对象来自我没有在此处列出的 API 调用,但是data
传递给我的getStudentStats()
函数的变量是该 API 调用的结果,它的输出可以在下面突出显示的图像中看到[1]。它是学生及其相关数据的列表。
我的第二个对象是 JSON 调用的结果,如下所示(UWA.Data.getJson()
函数)。它的输出可以在下面突出显示的图像中看到[2]。它是学生 ID 列表和我本地数据库中的一些统计数据,即他们收到的标志数量以及为他们提出的干预数量。
getStudentStats : function(data) {
/* [1] Console log */
console.log(data);
var student_list = '';
for( var i = 0; i < data.length; i++ )
student_list += data[i].id + ',';
student_list = student_list.substring(0, student_list.length - 1);
var Students = [];
var Student_Data = data;
UWA.Data.getJson(FLAGS_Assign_Flags.url + 'get_students_stats&arg=' + student_list, function(data) {
/* [2] Console log */
console.log(data);
for( var i = 0; i < data.length; i++ ) {
var Student_ID = data[i].Student_ID;
var obj = { 'flags': data[i].Flags, 'interventions': data[i].Interventions };
Students[Student_ID] = obj;
}
/* [3] Console log */
console.log(Students);
FLAGS_Assign_Flags.displayStudents(Students, Student_Data);
});
},
我想要做的是,基本上,显示来自这两个对象的一些信息(使用 jQuery.html()
和一个字符串变量)。
displayStudents : function(students, data) {
/* Set up our HTML variable which we'll .html() when it's populated */
var StudentsHTML = '<ul id="students_display">';
for( var i = 0; i < data.length; i++ ) {
/* For each student in the `data` object, grab their ID to access the correct element in the students object */
var id = data[i].id;
/* Set up a variable which we'll use to display the students' stats in our LI */
var stats = '<div>';
/* If the student doesn't have any flags or interventions, manually set the text */
if( typeof students[id] != 'undefined' )
stats += ' (F:<span class="f">' + students[id].Flags + '</span>|I:<span class="i">' + students[id].Flags + '</span>)';
else
stats += ' (F:<span class="f">0</span>|I:<span class="i">0</span>)';
stats += '</div>';
/* Produce checkbox, name and stats for each student and add them to the HTML variable */
StudentsHTML += '<li><input type="checkbox" name="students" value="' + data[i].id + '" /> ' + data[i].firstname + ' ' + data[i].surname + stats + '</li>';
}
StudentsHTML += '</ul>';
/* Set the HTML... */
$('#students').html(StudentsHTML);
/* Do some other stuff not relevant to this question! */
FLAGS_Assign_Flags.displayForm();
},
问题是,正如您在下图中突出显示的[3]中看到的,我的Students
对象在控制台中显示为一堆垃圾,我无法从中访问任何信息。
这是一个范围问题,还是我错误地设置了我的对象数组?