我有两个js函数   
    
  function   a(){   
    
    window.location.href =""
    b();   
   
  }   
  function   b(){   
    
  window.location.href =""
   
  }   
现在出现这种情况,当调用a函数时,通过在后台查看,会执行到b函数里面的window.location,但是a函数里面的window.location就有时可以执行到,有时不可以,请问是怎么回事,谢谢!

解决方案 »

  1.   

    也有可能是它先跳转a里window.location.href ="" 然后紧接着跳转b里的window.location.href ="" 
      

  2.   

    但是第一个window.location.href有时没执行的,第一个window.location.href跳转到一个action执行update语句,第二个window.location.href跳转到一个action执行select语句,设置断点,有时没跳进第一个window.location.href指向的action
      

  3.   

    正确执行顺序:
    先执行a里的window.location.href ="",在执行b里的,所以最终会显示b中location.href所指的地址 
      

  4.   

    function  a(){  
        
        window.location.href ="" ;
        setTimeout(function(){ //这样试试~·
          b(); 
        },1000);
         
      
      } 
      

  5.   

    你这个问题,按照js的运行方式来说,应该最后的执行结果是b()函数的结果。但是,请注意:你的a()函数里面的window.location.href=''; 也就是说,在运行b()函数之前,含有当前js函数的页面已经进行跳转到了你的 a()函数里面制定的 window.location.href='test.jsp' 中的test.jsp页面。如果你的test.jsp页面内容很大,内存加在缓慢,那么内存中你的b()函数还没有释放,可能就执行到了你的b()函数了,如果你的test.jsp速度很快,那么就是执行a()根本来不及执行b()函数。
    【附注】:你写这个函数是干什么用的?达到什么目的?这么写,本身你的函数就有问题。应该改写你的函数,不要用这种莫能两可的东西。
      

  6.   

    对了。[color=#000080]给分![/color]
      

  7.   

    问题是,有时根本不执行a里的window.location.href ="",设置断点,没有跳window.location.href =""指定的函数里,虽然最终会显示b中location.href所指的地址
      

  8.   


    js只是执行了这句 window.location.href="1.htm",执行并不表示加载完成了1.htm,可能还未开始加载1.htm就已经开始执行第二个window.location.href了,所以会出现你上面说的现象.
      

  9.   

    我是用struts2.0的,a里面的window.location.href='';执行一个action,执行更新的更能,接着b里面的window.location.href执行查询的功能,当然是更新后的,返回一个页面
      

  10.   

    试了,调用之后跳到a里面的window.location.href ="" ;,没有执行b();
      

  11.   


    楼主,是新学struts2.0吧?看过关于struts2.0的书籍么?你的a()函数,可以那么写,至于b()函数,就不用写了。你在struts2.0的配置文件中配置action的转向的jsp就可以了,在action里面写上转向的返回表示字符串,就可以和配置文件直接配合,跳转到你要的jsp。根本不能像你这么写js函数。你该去看看struts2.0的书籍,或者请教一下同事。
      

  12.   

    楼主怎么不用用firebug的js调试功能 ...
    很爽的...
      

  13.   

    struts2是一个十分成熟的MVC框架,你要的这种跳转功能,它早就给你实现了。你只要配置文件写一下就OK了。而且我怀疑你的a()函数也是不用写的,就是因为你的struts2框架不熟悉。——记得给分。
      

  14.   

    就是楼主用了firebug也解决不了他的问题。他的问题出现在对框架的应用上,对js函数的基本理解和书写上。应该去看看书。看见我的头像了么?看完这本书,你的js基础基本就够你的web开发了。如果你对js感情趣,可以看看目前流行的js框架。jQuery、Prototype,甚至能用js生成漂亮页面Ext3.0。
      

  15.   

    function selectVillage(id,dwdm) {
         window.location.href ="updatedwobjAct.action?villageId="+id+"&dwdm="+dwdm;
         chkobj(dwdm);
    }function chkobj(dwdm)
    {
     window.location.href = "dwqkAct?dwdm="+dwdm;
    }上面是我的js函数,我点击一个按钮,就执行selectVillage函数,
    配置文件
    <action name="updatedwobjAct" class="com.mstedu.action.FpPkhVillageAction" method="updateVillsge">
    </action>
    <action name="dwqkAct" class="com.mstedu.action.FpBfdwAction" method = "execute1">
    <result name="success1">/bfdw/dwBfqk.jsp</result>
    </action>
      

  16.   

    楼主没明白JS的执行顺序,js中有类似预编译的方式,并不是简单的从上到下的形式。
      

  17.   

    我也是刚刚学js,困惑它的执行顺序。来搜索一下到这了,看了一下。给你一些建议吧,没是什么技术含量,知识方法:运行之前清理一下缓存,将a()的动作,换一个小一点点的界面,排除因为界面大加载慢的问题。可以再把b()放到动作前面,再去试一试,看一下效果!慢慢地各种设想就会排除,问题就很容易解决了,而且可以学到很多的东西~~