博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

javascript setTimeout 和 setInterval

Posted on 2007-09-21 22:18  Kent  阅读(2287)  评论(2)    收藏  举报
下面这一段代码是我下面的一个SP写的javascript.
这一段代码会耗尽客户端的资源!直接死机!

setTimeout] setTimeout(表达式,延时时间)

在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次

用setTimeout实现的自动变化显示随机数的效果:

<html> <head> <script> window.onload=sett; function sett() { document.body.innerHTML=Math.random(); setTimeout("sett()",500); } </script> </head> <body> </body> </html>

[setInterval] setInterval(表达式,交互时间)

则不一样,它从载入后,每隔指定的时间就执行一次表达式

用setInterval实现的自动变化显示随机数的效果: <html> <head> <script> function sett() { document.body.innerHTML=Math.random(); } setInterval("sett();", 500); </script> </script> </head> <body> </body> </html>

解决方法:我初定的方案是用setInterval来实现相应的操作。
其实,这一个函数的最终目的是要生成一个浮动的按钮。
而且20毫秒实在太短!
Hope to solve it tomorrow!



/***************************************************
* float move
***************************************************/
function F_FloatBar_move(objId,align,valign,xControl,yControl,hasParent)
{
     var objDiv=document.getElementById(objId);
     if(objDiv==null)
     {
       return;
     }
     var FloatBar_Top = F_AdjustFloatTopPx(valign,F_GetClientHeight(hasParent),hasParent);
     var FloatBar_Left=F_AdjustFloatLeftPx(align,F_GetClientWidth(hasParent),hasParent);
     var FloatBar_Delta = 0.05;
  
     var scrollTop=document.documentElement.scrollTop;
     var scrollLeft=document.documentElement.scrollLeft;
     if(hasParent=="true")
     {
        scrollTop=window.parent.document.documentElement.scrollTop;
        scrollLeft=window.parent.document.documentElement.scrollLeft;
     }
     if(yControl!="")
     {
        objDiv.style.top=F_GetOffsetTop(objId,valign,yControl)+"px";
     }
     else
     {
         if(objDiv.offsetTop != (scrollTop + FloatBar_Top))
           {
               var dy = (scrollTop + FloatBar_Top - objDiv.offsetTop) * FloatBar_Delta;
               dy = (dy > 0 ? 1 :  - 1) * Math.ceil(Math.abs(dy));
               objDiv.style.top = F_GetTopPx(objId,(objDiv.offsetTop + dy),F_GetClientHeight("false"))+"px";
           }
       }
      if(xControl!="")
       {
        objDiv.style.left=F_GetOffsetLeft(objId,align,xControl)+"px";
       }
       else
       {
          if(objDiv.offsetLeft != (scrollLeft + FloatBar_Left))
           {
               var dx = (scrollLeft + FloatBar_Left - objDiv.offsetLeft) * FloatBar_Delta;
             
               dx = (dx > 0 ? 1 :  - 1) * Math.ceil(Math.abs(dx));
               if((objDiv.offsetLeft + dx)>=0)
               {
               objDiv.style.left = F_GetLeftPx(objId,(objDiv.offsetLeft + dx),F_GetClientWidth("false"))+"px";
               }
           }
        }
     setTimeout("F_FloatBar_move('"+objId+"','"+align+"','"+valign+"','"+xControl+"','"+yControl+"','"+hasParent+"')",20);
}