奇怪的循环终止(不会弹出窗口,只是innerHTML了)

BaSaRa_GIT 2007-12-06 05:48:19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<body onload="sb();">
<script language="JavaScript">
<!--
var a = 0;
var x;
function sb() {
if (1 < 5)
{
a ++;
if (a > 10)
{
document.getElementById("over").innerHTML += "超时";
clearInterval(x);
xb();
}
else
{
x = setInterval("sb()", 10);
}
}
}
function xb(){
document.getElementById("div1").innerHTML = a;
}
//-->
</script>
<div id="over"></div>
<div id="div1"></div>
</body>
</html>

我想让a>10的时候清除定时器并且执行xb函数,为什么不能清除呢?....
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2007-12-07
  • 打赏
  • 举报
回复

/*你原来的代码里面的判断就是这样了当a<10时,就执行了x = setInterval("sb()", 10);
所以产生了10个定时器,只是x保存的是最后一个定时器的变量.你clearInterval(x); 只是清除了最后一个定时器,还有9个再运行中

setInterval()是产生一个连续执行的定时器
setTimeout()产生一个只执行一次的定时器
*/
if (a > 10)
{
document.getElementById("over").innerHTML += "超时";
clearInterval(x);
xb();
}
else
{
x = setInterval("sb()", 10);
}


BaSaRa_GIT 2007-12-06
  • 打赏
  • 举报
回复
2楼的可以解决问题,但是我改成setTimeout也可以执行,难道setInterval会产生N个定时器???
但是setTimeout生成的定时器句柄也是不同的啊。。。
BaSaRa_GIT 2007-12-06
  • 打赏
  • 举报
回复
2楼的可以解决问题,但是我改成setTimeout也可以执行,难道setInterval会产生N个定时器???
但是setTimeout生成的定时器句柄也是不同的啊。。。
BaSaRa_GIT 2007-12-06
  • 打赏
  • 举报
回复
2楼的可以解决问题,但是我改成setTimeout也可以执行,难道setInterval会产生N个定时器???
但是setTimeout生成的定时器句柄也是不同的啊。。。
BaSaRa_GIT 2007-12-06
  • 打赏
  • 举报
回复
2楼的可以解决问题,但是我改成setTimeout也可以执行,难道setInterval会产生N个定时器???
但是setTimeout生成的定时器句柄也是不同的啊。。。
BaSaRa_GIT 2007-12-06
  • 打赏
  • 举报
回复
2楼的可以解决问题,但是我改成setTimeout也可以执行,难道setInterval会产生N个定时器???
但是setTimeout生成的定时器句柄也是不同的啊。。。
Go 旅城通票 2007-12-06
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html>
<head>
<title> New Document </title>
</head>
<body onload="sb();">
<script language="JavaScript">
<!--
var a = 0;
var x=null;
function sb() {
a++;
if (a > 10)
{
document.getElementById("over").innerHTML += "超时";
clearInterval(x);
xb();
}
else if(x==null)//判断这个定时器是否已经存在
{
x = setInterval("sb()", 10);
}
}
function xb(){
document.getElementById("div1").innerHTML = a;
}
//-->
</script>
<div id="over"> </div>
<div id="div1"> </div>
</body>
</html>
Atai-Lu 2007-12-06
  • 打赏
  • 举报
回复
x = setInterval("sb()", 10); ????
这行是不是多了对双引号?!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧