问题描述:参数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]);
                  }
}
});
});

解决方案 »

  1.   

    这个应该问你,gidstr怎么来的。
      

  2.   

    在这个gidstr = gidstr.split(",");
    下面加alert(gidstr)看结果测试下
      

  3.   

    你确定循环gidstr 时传过来的都是两个数据吗
      

  4.   

    gidstr没问题,问题是在排序的时候出现的问题function setData(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);
    });
    }
      

  5.   

    arr[i] = "<option value='"+data[0].gid+"'>"+data[0].serialNumber.replace(".tif","")+"</option>";arr.push();试试
      

  6.   

    难道csdn上真的没有高人了么?
      

  7.   

    还是得靠自己啊!!!
    本人已经解决问题,下面将描述解决细节供解决类似问题的参考:
    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);
      

  8.   


    只做第二部如何将arr传值到方法中?即使将append方法修改为append(arr),在window.setTimeout("append("+arr+")", 500);也是无用的