请问鼠标不断移入,轮播会加速,是什么原因?

function byId(id){
	return typeof(id)==="string"?document.getElementById(id):(id);
}
var index=0,
	pics=byId("banner").getElementsByTagName("div"),
	len=pics.length,
	timer=null;
function slideImg(){
	var main=byId("main");
	//鼠标放置,轮播停止
	main.onmouseover=function(){

	}
	//鼠标离开,进行轮播
	main.onmouseout=function(){
		timer=setInterval(function(){
			index++;
			if(index>=len){
				index=0;
			}
			//图片切换
			changeImg();
		},3000)
	}
	main.onmouseout();
}
function changeImg(){
	for(var i=0;i<len;i++){
		pics[i].style.display="none";
	}
	//鼠标离开时,给索引添加display属性
	pics[index].style.display="block";
}
slideImg();


慕婉清0895596
浏览 1426回答 4
4回答

sheshunjiang

解决方案:移出前需要先清除定时器(clearInterval(timer))。解析:如果在鼠标移出时,没有清除定时器,那么移出的时候,就会又开一个定时器。所以轮播会加快。

NicholasCZakas

楼上说的都有道理!同意

小羊杨

没有清除定时器,多个定时器导致速度被加倍了。

Gotta

在 onmouseover 里有吧timer移除掉吗, 如果没有,鼠标每次放进去都会生成一个新的定时器,变成同时有好几个定时器在跑 当然越来越快了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript