87,910
社区成员
发帖
与我相关
我的任务
分享
/*你原来的代码里面的判断就是这样了当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);
}
<!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>