function onload()
{
var objShowForm = document.showForm;
for(var i=0;i<objShowForm.sltCompany.length;i++)
{
if(objShowForm.sltCompany.options(i).value==objShowForm.companyId.value)
{
objShowForm.sltCompany.options(i).selected=true;
getDept();
}
} alert("Wait for a while.");
for(var j=0;j<objShowForm.sltDept.length;j++)
{
if(objShowForm.sltDept.options(j).value == objShowForm.departentId.value)
{
objShowForm.sltDept.options(j).selected=true;
searchEmployee();
}
}
}

解决方案 »

  1.   

    当我把上面代码中的alert()去掉以后,下面的一个for循环就不会执行,我猜想是由于第二个循环的条件依赖于一个循环的结果,第二个循环检索需要时间,alert()恰好能提供时间延迟。但是如果不用alert(),不知道还有什么办法可以解决这个问题?
      

  2.   

    从技术角度来看,你说的情况不太可能发生.我觉得可能是你代码的问题.
    你把alert()的位置挪到第二个循环的里面,看能不能执行?如果能,就说明你的代码有问题,不能的话,我也不知道了~~~~~~~~~~~~~~~
      

  3.   

    你用ALERT跟踪一下,看到哪出的错或是值没了。之后再告诉大家
      

  4.   

    这里的alert()语句,只要放在第二个循环的if()之前都可以正常显示,否则结果错误。
      

  5.   

    怀疑第一个循环生成的objShowForm.sltDept不是一个数组,没有值或只有一个值,建议在用之前先判断一下objShowForm.sltDept.length是否为undefined.
      

  6.   

    可能是getDept()中调用了一个新线程,该线程中产生的值于第二个循环
      

  7.   

    不太可能吧,第一个循环没结束的话怎么会到第二个循环去呢?
    可以在第二个循环之前先alert一下objShowForm.sltDept.length和objShowForm.sltCompany.options(i)的值看看。
    另外,看一下javaScript的error内容应该会有帮助。
      

  8.   

    可能是getDept()中调用了一个新线程,该线程中产生的值用于第二个循环