<HTML>
    <HEAD>
        <SCRIPT>
        function fnFireEvents()
        {
           var count = 1;      var directCallFunction = function (){
         alert ("直接调用" + count);
      };       var setTimeoutCallFunction = function (){
       alert ("setTimeout 调用" + count);
        };       setTimeout(setTimeoutCallFunction);       count ++;       directCallFunction ();
 
       count ++;       setTimeout (setTimeoutCallFunction, 0);       count ++;       directCallFunction ();       count ++;        }
        </SCRIPT>
    </HEAD>
    <BODY>
        <BUTTON ID="btn" ONCLICK="fnFireEvents();">Button</BUTTON>
    </BODY>
</HTML>  结果为什么是这样?   直接调用2
   直接调用4
   setTimout调用5
   setTimout调用5

解决方案 »

  1.   

    setTimeout (setTimeoutCallFunction, 0);虽然是0 也有延迟的效果 会让之后的代码先执行
      

  2.   


    setTimeout 别用~·直接执行相应方法就行~·
      

  3.   

    参考http://www.cnblogs.com/winner/archive/2008/11/15/1334077.html
      

  4.   


    <HTML>
      <HEAD>
      <SCRIPT>
      function fnFireEvents()
      {
      var count = 1; function directCallFunction (){
      alert ("直接调用" + count);
      };  function setTimeoutCallFunction (){
      alert ("setTimeout 调用" + count);
      };  setTimeoutCallFunction();//setTimeout 调用1  count ++;  directCallFunction ();//直接调用2
      
      count ++; setTimeoutCallFunction();//setTimeout 调用3  count ++;  directCallFunction ();//直接调用4  count ++;  }
      </SCRIPT>
      </HEAD>
      <BODY>
      <BUTTON ID="btn" ONCLICK="fnFireEvents();">Button</BUTTON>
      </BODY>
    </HTML>