<script src=jq.js></script><script>
function p1(){
  $("#test").show();
} function p2(){
   for(var i=0;i<10000;i++){
   i++;
   }
} function p3(){
  $("#test").hide();
} function p4(){
p1();
p2();
p3();
}
</script><button onClick="p4()">测试</button><div id='test' style="display:none">loading..</div>

解决方案 »

  1.   

    程序执行是需要时间的,如果你依赖p1,p2,p3的执行顺序,可以让p1,p2返回一个值,如果值正确再执行后面的函数
      

  2.   


    像这种样子的$("#p1,#p2").toggle();
    $("#p1:visible,#p2:visible").focus();怎么确保先执行第一句,再执行第二句呢~~求教~~
      

  3.   


    像这种样子的$("#p1,#p2").toggle();
    $("#p1:visible,#p2:visible").focus();怎么确保先执行第一句,再执行第二句呢~~求教~~
    toggle的回调函数的,能满足你的需求
    $("#p1,#p2").toggle('slow', function() {
        // Animation complete.
        $("#p1:visible,#p2:visible").focus();
      });
      

  4.   


    像这种样子的$("#p1,#p2").toggle();
    $("#p1:visible,#p2:visible").focus();怎么确保先执行第一句,再执行第二句呢~~求教~~
    toggle的回调函数的,能满足你的需求
    $("#p1,#p2").toggle('slow', function() {
        // Animation complete.
        $("#p1:visible,#p2:visible").focus();
      });
    这个在IE9下貌似会出现很奇怪的结果~~哎~~
      

  5.   

    看上去会是先显示,然后循环过后再隐藏,但实际运算速度远超过你的想象。
    所以10000个循环其实就是一眨眼的功夫,且小于画面2从刷新时间间隔。
    所以不会看到这个“显示”过程。
    但就算你把这个循环放大到足够大,也未必能看见这个“显示”过程。
    因为你的程序没有给他显示时间。可能导致js运行超负荷,而停止响应。
    所以想要先看到然后马上隐藏,就得给显示时间。
    比如:
    show();
    setTimeout(hide(),50);
      

  6.   


    像这种样子的$("#p1,#p2").toggle();
    $("#p1:visible,#p2:visible").focus();怎么确保先执行第一句,再执行第二句呢~~求教~~
    toggle的回调函数的,能满足你的需求
    $("#p1,#p2").toggle('slow', function() {
        // Animation complete.
        $("#p1:visible,#p2:visible").focus();
      });
    这个在IE9下貌似会出现很奇怪的结果~~哎~~哪用animate吧
      

  7.   

    js在执行一个脚本段期间是不会渲染(更新)页面的。
    一个脚本段期间所有对页面的改变要等到这个脚本段执行完毕后才会对页面进行渲染(更新)。另外,一个脚本段的执行时间不能太长,否则会造成浏览器未响应。所以p2()这种c语言时代的延时方法是不行的,js中要延时的话请用setTimeout()