function XXX(){
AddDrp()   调webservice,画出这个下拉菜单var obj2=document.getElementById("drp_zzzxzzlb"+k).options;//取出刚才画的那个下拉菜单
}现在棘手问题是,AddDrp()还未画好下拉菜单,js已经往下走了,造成取不到对象名
如果我在AddDrp()后加个alert(),让程序停一下,一切正常,请问有何解决办法

解决方案 »

  1.   

    楼上说得有道理,你调用之后加一个延时,用SetTimeOut,大概3到5秒,然后再执行下面的程序...
      

  2.   

    查一下看看是否有getElementById("drp_zzzxzzlb"+k).options这个东西是否取的到
      

  3.   

    你的AddDrp难道是异步调用WebService?
    欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
    我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
      

  4.   

    xlshen_lxz() ( ) 信誉:100    Blog  2006-10-20 09:29:00  得分: 0  
     
     
       查一下看看是否有getElementById("drp_zzzxzzlb"+k).options这个东西是否取的到
      
     我加了个死循环
    for(var i=0;i<1;i++)
    {
        try{
           getElementById("drp_zzzxzzlb"+k).options;
             .
             .
           break;
          }
         catch(e){i=0;}
    }机器跳不出,直接死循环了
      

  5.   

    aafshzj() ( ) 信誉:100    Blog  2006-10-20 09:30:00  得分: 0  
     
     
       你的AddDrp难道是异步调用WebService?
    ======================
    是异步调用的
      

  6.   

    既然异步,那不是可以callback吗?在callback中做或者改成同步。等待一定时间是一种选择,但不是最佳选择。有时候网络慢,就要等半天,而时间设定不可能“长短皆宜”。
      

  7.   

    你的AddDrp()是什么?你在用ASP.NET 2.0 Callback,Atlas,AjaxPro.NET还是什么?如果是Atlas的话,调用WebService的函数有一个callback委托,你可以传递一个函数过去,该函数将在WebService成功调用之后接着被调用。如果是其他框架的话,我不是很了解,不过如果也是异步调用WebService的话,肯定也会类似的允许你传递一个callback委托的。然后,如果你有些代码一定要在WebService调用成功后再执行,就不应该放在WebService调用语句之后,而应该放在callback委托的那个函数中。在那个函数中判断WebService是否调用成功,然后继续执行。