为什么我的轮播会一次性播完三张图片呢

为什么我的轮播会一次性播完三张图片呢

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<link rel="stylesheet" type="text/css" href="css/style.css" />
	</head>
	<body >
		<div class="main" id="main">
			<div class="banner" id="banner">
				<a href="">
					<div class="banner-slide slide1 slide-active"></div>
				</a>
				<a href="">
					<div class="banner-slide slide2"></div>
				</a>
				<a href="">
					<div class="banner-slide slide3"></div>
				</a>

			</div>
			<div>
				<a href="javascript:void(0)" class="button prev"></a>
				<a href="javascript:void(0)" class="button next"></a>
				<div class="dots">
					<span class="active"></span>
					<span></span>
					<span></span>
				</div>
			</div>
		</div>
		<script src="js/script.js"></script>
	</body>
</html>
* {
	margin: 0px;
	padding: 0px;
}
ul{
	list-style: none;
}
body{
	font-family: "微软雅黑";
	color: #14191e;
}
.main{ 
	width: 1200px;
	height: 460px;
	 margin: 30px auto; 
	 overflow: hidden; 
	 position: relative;
}
.banner{
	
	width: 1200px;
	height: 460px;
	overflow: hidden; 
	position: relative; 
}
.banner-slide{
	width: 1200px;
	height: 460px;
	position: absolute; 
	background-repeat: no-repeat;
	display: none;
	
}
.slide-active{
	display: block;
}
.slide1{
	background-image: url(../img/bg1.jpg);
	
	
}
.slide2{
	background-image: url(../img/bg2.jpg);
	
}
.slide3{
	background-image: url(../img/bg3.jpg);
	
}
.button{
	position: absolute;

	width: 40px;
	height: 80px;
	left: 244px;
    top:50%;
	margin-top:-40px ;
	
	background:url(../img/arrow.png) no-repeat center center;
}
.button:hover{
	background-color: #333;
	opacity: 0.5;
	
}
.prev{
	transform: rotate(180deg);
}
.next{
	left: auto;
	right: 0;
}
.dots{
	position: absolute;
	right: 0;
	bottom: 24px;
	text-align: right;
}
.dots span{
	display: inline-block;
	height: 12px;
	width: 12px;
	border-radius: 50%;
	background: rgba(1,17,27,0.4);
	margin-right: 8px;
	box-shadow:  0 0 2px 2px rgba(255,255,255,0.8) inset; 
	/* border: 1px solid white ; */
	cursor: pointer;
}
.dots span.active{
	box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset;
	background: #fff;
}
function byId(id) {
	return typeof(id) === "string" ? document.getElementById(id) : id;
}
var index = 0;
timer = null;
pics = byId("banner").getElementsByTagName("div");
len = pics.length;

function slideImg() {
	var main = byId("main");
	main.onmouseover = function() {

	}
	main.onmouseout = function() {
		timer = setInterval(function() {

			if (index >= len) {
				index = 0;
			}
			changeImg();
			index++;
			
		}, 2000);
	}
}
function changeImg(){
	for( var i=0;i<len;i++){
	pics[i].style.display='none';	
	}
	pics[index].style.display='block';
	console.log(index);
	
}
slideImg();


正在回答

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

1回答

同学你好,一开始轮播图是正常运转的,当鼠标滑过时,才会出现一次性播完三张图片的问题,

同学在js中添加这句代码试试:

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

在没加这句话之前,同学可以看一下,在3-5 图片的自动轮播和停止课程中,老师的2分45秒左右,也会出现同学出现的这个问题

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!



  • 老师讲课的时候好像并没有意识到这个问题吧,当时讲的是鼠标停留画面不会切换的这个功能,我想问问这是为什么会出这个问题,我看有其他的同学也出现了这个问题,我参考之后修改了时间间隔结果就正常了呢
    2019-09-07 16:16:05
  • 同学你好,是的,老师没有讲解到这个问题,非常抱歉,这里是因为,如果不加这个清除定时器的函数,则每次鼠标移入,都会累加一个计时器,相当于每次移入都会添加一个计时器哦。所以这里鼠标滑过时,可以清除之前的定时器,就不会出现这个问题了。祝学习愉快。
    2019-09-07 17:02:08
  • 听你这么一说茅塞顿开,谢谢!
    2019-09-07 17:25:13
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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