问题描述:参数gidstr传过来2个数据,但是经过循环之后,if里边的arr里边的结果有时候事一个有时候是两个,请高人解答并修改//gidstr是传过来的参数
gidstr = gidstr.split(",");
$.each(gidstr,function(i,n){
recvMsgFunction.findPageByHQL(" and gid='"+n+"'",0,10, function(data){
arr[i] = "<option value='"+data[0].gid+"'>"+data[0].serialNumber.replace(".tif","")+"</option>";
if(i == gidstr.length -1){
for(var j=0;j<arr.length;j++){
$("#faxNumVsat1").append(arr[j]);
}
}
});
});
gidstr = gidstr.split(",");
$.each(gidstr,function(i,n){
recvMsgFunction.findPageByHQL(" and gid='"+n+"'",0,10, function(data){
arr[i] = "<option value='"+data[0].gid+"'>"+data[0].serialNumber.replace(".tif","")+"</option>";
if(i == gidstr.length -1){
for(var j=0;j<arr.length;j++){
$("#faxNumVsat1").append(arr[j]);
}
}
});
});
下面加alert(gidstr)看结果测试下
//拆分gid集合
gidstr = gidstr.split(",");
//for循环赋值
var arr = new Array();
//先将要填充的数据排序,然后再循环赋值给select
$.each(gidstr,function(i,n){
recvMsgFunction.findPageByHQL(" and gid='"+n+"'",0,10, function(data){
arr[i] = "<option value='"+data[0].gid+"'>"+data[0].serialNumber.replace(".tif","")+"</option>";
if(i == gidstr.length -1){
//append(arr);
$.each(arr,function(j,n){
window.setTimeout("append("+arr+")", 500);
$("#faxNumVsat1").append(arr[j]);
});
/*
//alert(arr);
for(var j=0;j<arr.length;j++){
$("#faxNumVsat1").append(arr[j]);
}
*/
//$("#faxNumVsat1").append("<option value='"+data[0].gid+"'>"+data[0].serialNumber.replace(".tif","")+"</option>");
}
});
//alert("append:"+arr);
});
}
本人已经解决问题,下面将描述解决细节供解决类似问题的参考:
1.将var arr = new Array();提到方法外边成为全局变量
2.将显示操作提取出另外作为一个方法function append(){
for(var j=0;j<arr.length;j++){
$("#faxNumVsat1").append(arr[j]);
}
}3.在原来的方法中调用:window.setTimeout("append()", 500);
只做第二部如何将arr传值到方法中?即使将append方法修改为append(arr),在window.setTimeout("append("+arr+")", 500);也是无用的