我目前正在尝试制作一个通过.load事件调用某些数据的网页,然后执行任务。我有一个名为intholder
的div,以及一个PHP页面,它生成一些我希望放入该div的输出。我得到的代码如下:
var numCol = floor(window.innerWidth / 200);
if(numCol > 5){numCol = 5;}
var colWidth = 100/numCol;
$("#intHolder").load("/scripts/loader.php?n=" + numCol + "&w=" + colWidth);
然后,PHP文件生成一系列<select>
个元素(numCol
个元素),并用数据库中的内容填充它们。每个选择框都有一个预先选择的值(由数据库查询确定),从这些值开始,需要在页面上加载更多内容。
每个选择框都有一个唯一的ID(canvasSeln
,其中n递增),以及一个包含1位数字类型的值和用于在数据库表中查找的文本值。最后,初始脚本还会生成一系列div,这些数据将放入其中,名为canvasLisn
,其中n与选择框相关联。以下是我得到的javascript:
for (var i=1;i<=$num;i++){
var rawSel = document.getElementById("canvasSel" + i).value;
var selNow = rawSel.substring(1);
var selType = parseInt(rawSel.substring(0,1));
if(selType == 1){
$("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow);
}else if(selType == 2){
$("#canvasLis"+ i).load("/scripts/product.php?x=" + selNow);
}else if(selType == 3){
$("#canvasLis"+ i).load("/scripts/department.php?x=" + selNow);
}else if(selType == 4){
$("#canvasLis"+ i).load("/scripts/customer.php?x=" + selNow);
}
}
我已尝试将该代码放入由初始.load回调触发的函数中,但它在绘制对象之前运行,因此无法找到要查找的值。有没有办法强制它在.load不仅完成后运行,但是对象已经被绘制了?
这是带回调的版本:
var numCol = floor(window.innerWidth / 200);
if(numCol > 5){numCol = 5;}
var colWidth = 100/numCol;
$("#intHolder").load("/scripts/loader.php?n=" + numCol + "&w=" + colWidth, function(){
for (var i=1;i<=numCol;i++){
var rawSel = document.getElementById("canvasSel" + i).value;
var selNow = rawSel.substring(1);
var selType = parseInt(rawSel.substring(0,1));
if(selType == 1){
$("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow);
}else if(selType == 2){
$("#canvasLis"+ i).load("/scripts/product.php?x=" + selNow);
}else if(selType == 3){
$("#canvasLis"+ i).load("/scripts/department.php?x=" + selNow);
}else if(selType == 4){
$("#canvasLis"+ i).load("/scripts/customer.php?x=" + selNow);
}
}
});
提前致谢。
答案 0 :(得分:3)
你说你尝试过回调,但你没有表现出来。你试过这个表格吗?
$("#canvasLis"+ i).load("/scripts/profile.php?x=" + selNow, function() {
// do stuff when load completes
});