我对javascript/jquery比较新。'嵌套'for'循环未被触发,直到第一次'后'循环
我想运行一个嵌套的for循环动态创建HTML内容,然后将其添加到我的身体表中。第一个'for'循环从Parse中提取数据,并创建一个html表格行脚本,然后将其附加到html正文中的表格中。嵌套的'for'循环应该为第一个循环中的每个项目运行,并在正下方创建一个表格行元素。
但是,由于某种原因(我在调试时看到这个),第一个for循环在触发嵌套循环之前完成。是否有任何明显的原因或语法造成这种情况?
在此先感谢!
$(document).ready(function(){
var currentUser = Parse.User.current();
var htmlContent = "";
if (currentUser) {
console.log(currentUser.get("full_name"));
$("#user").html(currentUser.get("full_name"));
var QrUrl = Parse.Object.extend("qr_url");
var qr_query = new Parse.Query(QrUrl);
qr_query.equalTo("createdBy", currentUser);
qr_query.include("createdBy");
qr_query.ascending("createdAt")
qr_query.find({
success: function(qrid_results) {
for (var i = 0; i < qrid_results.length; i++) {
var qridentry = qrid_results[i];
htmlContent="<tr><td>"+qridentry.get("title")+"</td><td>"+"Created"+"</td><td>"+qridentry.createdAt+"</td><td>"+qridentry.get("createdBy").get("full_name")+"</td></tr>";
$('#trackingtable').append(htmlContent);
var QrLogger = Parse.Object.extend("qr_logger");
var qrlog_query = new Parse.Query(QrLogger);
qrlog_query.equalTo("qrid", qridentry);
qrlog_query.include("createdBy");
qrlog_query.include("qrid");
qrlog_query.find({
success: function(qrlog_results) {
for (var j = 0; j < qrlog_results.length; j++) {
var qrlogentry = qrlog_results[j];
try{
var user_id = obj.get("createdBy").get("full_name");
console.log(user_id);
}
catch(err){
user_id="Unknown Scanner";
}
var dated = qrlogentry.updatedAt;
htmlContent="<tr><td>"+qrlogentry.get("qrid").get("title")+"</td><td>"+"Scanned"+"</td><td>"+dated+"</td><td>"+user_id+"</td></tr>";
$('#trackingtable').append(htmlContent);
}
}
});
//$('#trackingtable').dataTable({ });
}
}
});
}
});
'qrlog_query.find'似乎是一个异步函数。 –
这里并没有嵌套'for'循环。您需要了解**异步**接口如何工作。 – Pointy
是否真的没有办法限制这一切作为同步功能? – mkirzon