<!--通过点击第一个按钮实现:背景自动按时切换,点击停则会停止-->
<input type="button" value="换背景吧" />
<input type="button" value="停" />
<script>
var aBtn = document.getElementsByTagName('input');
var arrUrl = [ 'img/1.jpg', 'img/2.jpg', 'img/3.jpg', 'img/4.jpg' ];
var num = 0; //数组下标
var timer = null; //用来停定时器的
var oBody = document.body;
aBtn[0].onclick = function (){
clearInterval( timer ); // null、未定义 用来清除定时器的,防止鼠标点击多次开启多个定时器让图片加速跳转
timer = setInterval(function(){
oBody.style.background = 'url('+ arrUrl[num] +')';
num++; //num值依次增加
num%=arrUrl.length; //使值在0-3之间确保能在数组中循环
}, 1000);
};
aBtn[1].onclick = function (){
clearInterval( timer );
<input type="button" value="换背景吧" />
<input type="button" value="停" />
<script>
var aBtn = document.getElementsByTagName('input');
var arrUrl = [ 'img/1.jpg', 'img/2.jpg', 'img/3.jpg', 'img/4.jpg' ];
var num = 0; //数组下标
var timer = null; //用来停定时器的
var oBody = document.body;
aBtn[0].onclick = function (){
clearInterval( timer ); // null、未定义 用来清除定时器的,防止鼠标点击多次开启多个定时器让图片加速跳转
timer = setInterval(function(){
oBody.style.background = 'url('+ arrUrl[num] +')';
num++; //num值依次增加
num%=arrUrl.length; //使值在0-3之间确保能在数组中循环
}, 1000);
};
aBtn[1].onclick = function (){
clearInterval( timer );
};
总结:定时器如果由用户控制(即事件),则先关后开(即先清除定时器,在执行定时器)。因为当用户点击多次后,图片背景的切换会加快。 假设:我叫A,每隔2分钟切换下图片。在这2分钟中的第一分钟开始时在叫B去每隔2分钟切换下图片,那么A会先把图片切换过来,然后在其没切换到下张的时候B又切换其图片 ---不知道是不是这个原因