JavaScript 定时器循环问题

JavaScript012

JavaScript 定时器循环问题,第1张

<span id=txt></span>

<script>

var i=0

setTimeout(function t(){

   document.getElementById("txt").innerHTML+=(i+++5)%6+" "

   if(i<6)setTimeout(t,1000)

},1000)

</script>

你在函数内再次用setInterval调用函数本身,就会产生叠加效果,速度会越来越快。应该一次性用setInterval调用函数即可:

<script>

var i = 0

var timer = setInterval(function(){

   document.getElementById("text").value = i++

},5000)

function stop2(){

   clearInterval(timer)

}

</script>

或者改用setTimeout也可,这是一次性调用的(相当于定时器),那么在函数内再次调用就能实现循环效果了。而setInterval本身就是重复调用的(相当于计时器),不能放在函数内使用:

<script>

var i = 0

var timer = 0

window.onload = function start2(){

   document.getElementById("text").value = i++

   timer = setTimeout(start2, 5000)

}

function stop2(){

   clearTimeout(timer)

}

</script>

setTimeout("timedCount()",100)的意思是

100毫秒以后,执行timedCount()方法。而这句话本身就在timedCount()方法中,所以形成了一个递归循环