帮我看看这个问题,有关setTimeout的

Lixh2000 2004-11-08 07:35:53
我想写一段动态变换窗口背景的代码,想要达到的目的是,1、随机挑选图片做为背景;2、变更背景的时间间隔在一定时间内是随机的;3、清屏方式是随机的(有多种清屏方式)。现在的问题是,因为在代码中用了几个setTimeout,不知何处出错,导致程序运行了一阵子之后,也就是实现了上述功能若干次后,就不再变更背景了。我怀疑是setTimeout太多的缘故,但不知如何修改,请帮忙看看。基本框架如下:
<script language="JavaScript">
....
var nFirst=1; //是不是第一次运行
var nClearID=0;
var nSysTimeoutID;
var nClearTimeoutID;

function RandomChangeBackPic()
{
....
if(nFirst) //如果是第一次运行
{
....
nFirst=0;
nSysTimeoutID=window.setTimeout("RandomChangeBackPic()",Math.round(Math.random()*1000*60*nTimeInterval));
return;
}
....
//nClearID随机赋值
if(nClearID==1) //清屏方式1
{
....
ClearScreen1();
}
....
if(nClearID==N) //清屏方式N
{
....
ClearScreenN();
}
}

function ClearScreen1()
{
if(nSysTimeoutID)
window.clearTimeout(nSysTimeoutID);
if(....)
{
....
nClearTimeoutID=window.setTimeout("ClearScreen1()",1);
}
else
{
window.clearTimeout(nClearTimeoutID);
....
nSysTimeoutID=window.setTimeout("RandomChangeBackPic()",Math.round(Math.random()*1000*60*nTimeInterval));
}
}
....
function ClearScreenN()
{
if(nSysTimeoutID)
window.clearTimeout(nSysTimeoutID);
if(....)
{
....
nClearTimeoutID=window.setTimeout("ClearScreenN()",1);
}
else
{
window.clearTimeout(nClearTimeoutID);
....
nSysTimeoutID=window.setTimeout("RandomChangeBackPic()",Math.round(Math.random()*1000*60*nTimeInterval));
}
}
....

window.onload=RandomChangeBackPic;
</script>
...全文
179 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Lixh2000 2005-02-22
  • 打赏
  • 举报
回复
谢谢各位,问题已经解决。我重新调整了一下结构,只用了一个settimeout()函数,问题不再出现。
cxz7531 2005-02-04
  • 打赏
  • 举报
回复
是啊,把代码贴出来
DwNet 2005-02-04
  • 打赏
  • 举报
回复
跟setTimeout使用次数没关系吧.你应该把全部代码发出来.

大家才好查出错误的原因.呵呵~~:)
peilianhai 2005-02-04
  • 打赏
  • 举报
回复
用用这个函数clearTimeout()
应该对你有用
Lixh2000 2004-11-08
  • 打赏
  • 举报
回复
自己顶一下
Lixh2000 2004-11-08
  • 打赏
  • 举报
回复
Lixh2000 2004-11-08
  • 打赏
  • 举报
回复
还是没有人回答,再顶一下
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-11-08 07:35
社区公告
暂无公告