jQuery作用域,.each
更多的帮助,不同的问题。我想从内部循环返回allLessonsArray,但由于某些原因,它无法到达循环函数的外部。我注意到它在哪里起作用,在哪里不起作用。我怎么把这个放回外面jQuery作用域,.each,jquery,each,Jquery,Each,更多的帮助,不同的问题。我想从内部循环返回allLessonsArray,但由于某些原因,它无法到达循环函数的外部。我注意到它在哪里起作用,在哪里不起作用。我怎么把这个放回外面 var allLessonsArray= new Array(); $.each(lessonInTopicSectionArray, function(index, lesson){ var lastAttempt = 0; url='domain/learn/mod/lesson/rep
var allLessonsArray= new Array();
$.each(lessonInTopicSectionArray, function(index, lesson){
var lastAttempt = 0;
url='domain/learn/mod/lesson/report.php?id='+lesson.id+'&action=reportdetail&userid='+userid+'&try='+lastAttempt;
$.get(url, function(data) {
var lessonArray= new Array();
$(data).find('tr.r1.lastrow td.cell.c0')
.each(function(index, content) {
var string=jQuery(content).html()
score=parseInt(string.substr(string.length - 1));
lessonArray[index]=score;
});
allLessonsArray[index]={name:lesson.name, score: lessonArray};
//This works.
alert(allLessonsArray[0].name);
alert(allLessonsArray[0].score[0]);
});
//This doesn't work.
alert(allLessonsArray[0].name);
alert(allLessonsArray[0].score[0]);
});
return allLessonsArray;
是一个AJAXie。一个异步请求,所以你不能随心所欲
你可以做:
var allLessonsArray= new Array();
$.each(lessonInTopicSectionArray, function(index, lesson){
var lastAttempt = 0;
url='http://www.training-source.org/learn/mod/lesson/report.php?id='+lesson.id+'&action=reportdetail&userid='+userid+'&try='+lastAttempt;
$.get(url, function(data) {
var lessonArray= new Array();
$(data).find('tr.r1.lastrow td.cell.c0')
.each(function(index, content) {
var string=jQuery(content).html()
score=parseInt(string.substr(string.length - 1));
lessonArray[index]=score;
});
allLessonsArray[index]={name:lesson.name, score: lessonArray};
// check length to ensure that full array will return
if( allLessonsArray.length === lessonInTopicSectionArray.length )
reciever(allLessonsArray);
});
});
function receiver(allLessonsArray){
console.log(allLessonsArray);
}
.get()
的异步行为导致了您的问题。是否有方法在上一次迭代后返回完整数组?非常好。工作完美,我学会了一种新的调试方法。谢谢。我该如何归还阵列?(代码来自较大的函数)。@NathanLothamer as$.get()
是异步的。您需要使用目标数组启动另一个函数,并在该函数中进行进一步处理,而不是返回。这就是回归的过程。这就是我所想的,这就是我现在正在实施的,谢谢。