日期:2014-05-16  浏览次数:20451 次

setTimeout()方法使用问题
<script language="javascript">
var yourwords="欢迎光临本站";
var speed=3000;
var control=1;
flash();
function flash()

  if(control==1)
  { window.status=yourwords;
  control=0;
  } 
  else
  { 
  window.status="";
  control=1;
  }
  setTimeout("flash()",speed);
}
</script>
</head>
<body>
</body>
</html>

上面的程序用浏览器运行时function flash()通过flash()调用,立即显示状态栏信息,延迟3秒后再次显示状态栏信息,
而当我在函数外不使用flash()调用,而是在body中使用onload="flash()"加载时,状态栏信息是延迟3秒显示,
这是什么原因造成的差别?setTimeout()只是延迟函数的调用,程序是怎样实现循环调用setTimeout("flash()",speed)方法的?



------解决方案--------------------
一问:body中使用onload="flash()" 是页面所有内容加载完成后才调用flash()方法,而flash()直接调用是浏览器执行到 flash() 是就调用了 function flash(){} 的方法,所以存在延迟现象。

二问:setTimeout() 方法是指定延迟时间调用函数的,而你调用的函数里放置了 setTimeout() 的方法,所以每当执行了被调用的函数时就又执行了 setTimeout() 的方法,这样就实现循环调用 setTimeout() 了