清除不了定时器。

清除不了定时器。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<div class="wrapper">
<div class="header">
<span class="btn active">首页</span>
<span class="btn">点击看看</span>
<span class="btn">会自动的</span>
<span class="btn">我的网址</span>
</div>
<div class="banner">
<img src="2.jpg" alt="`" class="active1">
<img src="3.jpg" alt="`">
<img src="4.jpg" alt="`">
<img src="5.jpg" alt="`">
</div>
</div>


<script src="js/index.js" ></script>
</body>
</html>
*{
padding: 0;
margin: 0;
}
img{
width: 100%;
}
.wrapper{
width: 800px;
height: 450px;
margin: 150px auto;
overflow: hidden;
}
.header{
width: 100%;
height: 50px;
text-align: center;
border-radius: 5px;
}
.header .btn{
width: 200px;
display: inline-block;
height: 100%;
float: left;
line-height: 50px;
color: #666;
cursor: pointer;
border-radius: 7px;
}
.active{
background-color: #ffcc00;
}
img{
display: none;
}
.banner .active1{
display: block;
}
.banner{
}
var index = 0,
btn = document.getElementsByClassName('btn'),
img = document.getElementsByTagName('img'),
box = document.getElementsByClassName('wrapper')[0],
timer = null;


function startAutoPlay(){
timer = setInterval(function(){
index++;
if(index>=btn.length) index=0;
changeImg();
},1000)
}

function changeImg() {
for (var i=0;i<btn.length;i++){
btn[i].className='btn';
img[i].className='';
}
btn[index].className='btn active';
img[index].className='active1';
}

startAutoPlay();


function stopAutoPlay(){

if(timer){
clearInterval(timer);
}
startAutoPlay();
}
for(var i = 0;i<btn.length;i++){

btn[i].setAttribute("id",i);
btn[i].addEventListener('click',function(){
index = this.getAttribute("id");
btn[index].className = "btn active";
stopAutoPlay();
changeImg();
})
}
//鼠标划入box清除播放
box.addEventListener("mousemove",stopAutoPlay)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕慕子 2019-06-15 13:14:01

同学你好, 因为你在stopAutoPlay函数中, 清除定时器后有调用了startAutoPlay()导致有开启了定时器,所以看到的效果和没有清除定时器一样, 建议修改:

1、如下图所示, 可以删除清除定时器后面开启轮播的函数

 http://img1.sycdn.imooc.com//climg/5d047dd70001c8a909100414.jpg

2、给大盒子绑定函数移入事件清除定时器, 停止轮播, 鼠标移出大盒子开启轮播。

http://img1.sycdn.imooc.com//climg/5d047e5500011c6711340178.jpg

同学可以结合示例, 自己下去测试一下哦

如果帮助到了你,欢迎采纳!

祝学习愉快~~~

提问者 saill 2019-06-15 11:53:19

设置成mouseover也不行。。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师