多次调用定时器

时间:2022-08-20 00:17:03

在上篇文章中我们提到了多次调用定时器,今天我们就利用一个 gft动态图 这样一个demo来处理这个问题

<body>

<div id="warp">

<img src="img/0.jpg" id="idImg" alt="" />

<!--开始-->

<input type="button" name="start" id="start" value="开始" />

<!--结束-->

<input type="button" name="end" id="end" value="结束" />

</div>

</body>

<script type="text/javascript">

//获取对象

//获取图片

var imgObj = document.getElementById("idImg");


//获取开始按钮

var startObj = document.getElementById("start");

//获取结束按钮

var endObj = document.getElementById("end");

//变量

//记录图片的状态

var index = 0;


function nextFunction() {

index++;

if(index > 7) {

index = 0;

}

imgObj.src = "img/" + index + ".jpg";

}

//设个全局变量,将定时器赋给这个全局变量

var timer;

//开始函数

function startFunction() {

//此行代码的作用:清除每次创建的定时器

clearInterval(timer);

//定时器

timer = setInterval(function() {

nextFunction();

}, 100);

}

//结束函数

function endFunction() {

clearInterval(timer);

}


//调用开始按钮

startObj.onclick = startFunction;

//调用结束按钮

endObj.onclick = endFunction;

</script>



就多次调用定时器而言,红色字体的部分至关重要,我们在多次调用定时器的时候,要先清除定时器,方可使用定时器,否则容易出现定时器越来越快的bug