有如下一段代码:
<html>
<head>
<script language="javascript">
var str=0;
function Test(){
if (str==10)
str=1;
else
str=str 1;
p.innerHTML=str;
setInterval('Test();',1000); //注意此处是setInterval
clearInterval(Test)
}
</script>
</head>
<body onload=Test()>
<span id="p"></span>
</body>
</html>
在运行的时候,它并不是先后输出的1 2 3 5 .....,而是基本没有次序,运行几秒后在任务管理器中就显示CPU为100%但把上面的setInterval换成setTimeout后就一切正常了,循环输出1-10。这两个函数的区别到底是什么啊?
<html>
<head>
<script language="javascript">
var str=0;
function Test(){
if (str==10)
str=1;
else
str=str 1;
p.innerHTML=str;
setInterval('Test();',1000); //注意此处是setInterval
clearInterval(Test)
}
</script>
</head>
<body onload=Test()>
<span id="p"></span>
</body>
</html>
在运行的时候,它并不是先后输出的1 2 3 5 .....,而是基本没有次序,运行几秒后在任务管理器中就显示CPU为100%但把上面的setInterval换成setTimeout后就一切正常了,循环输出1-10。这两个函数的区别到底是什么啊?
setTimeout(表达式,延时时间)
在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
[setInterval]
setInterval(表达式,交互时间)
则不一样,它从载入后,每隔指定的时间就执行一次表达式
由于你是反复调用自己所以用setTimeout就可以了,时间到了就有调用Test()
clearInterval(id); // 这里清除的不是函数,而是id不然就算你有10个CPU也顶不住。
http://download.csdn.net/source/308913样式表中文手册
http://download.csdn.net/source/304124JScript语言参考
http://download.csdn.net/source/308916
setTimeout意思是只会执行一次。
setInterval则会每间隔单位时间都会执行,直到你取消为止。
这样写的效果,类似于在方法体外用setInterval调函数也就是每间隔单位时间都会执行。
setTimeout就不同了,在这里如果是setTimeout就只是一个调用,只是循环而已。