3-4图片自动轮播
老师
function changeImg(){
pics[index].style.display="block";
}按照视频中,应该在鼠标触碰离开后,图片能自动轮播到最后一张图然后停止。然而我测试时图片一直停留在第一张图,无法实现轮播。为什么?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>b</title>
<!-- <link rel="stylesheet" type="text/css" href="css/styleb.css"> -->
<style type="text/css">
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
body{
font-family: "微软雅黑";
}
.main,.banner,.banner-slide{
width: 1200px;
height: 460px;
}
.main{
margin: 30px auto;
position: relative;
overflow: hidden;
}
.banner{overflow: hidden;}
.banner-slide{display: none;}
.slide1{
background-image: url('../img/bg1.jpg');
}
.slide2{
background-image: url('../img/bg2.jpg');
}
.slide3{
background-image: url('../img/bg3.jpg');
}
.slide-active{display: block;}
.button{
width: 40px;
height: 80px;
background:url('../img/arrow.png') no-repeat center center;
position: absolute;
top: 50%;
margin-top: -40px;
left: 244px;
}
.next{
left: auto;
right: 0;
}
.prev{
transform: rotate(180deg);
}
.button:hover{
background-color:gray;
opacity: 0.8;
filter: alpha(opacity=80);
}
.dots{
position: absolute;
bottom: 24px;
right: 20px;
}
.dots span{
width: 12px;
height: 12px;
border-radius: 50%;
background:rgba(7,17,27,0.4);
box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset;
display: inline-block;
margin-left: 8px;
cursor: pointer;
}
span.active{
background:white;
box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset;
}
</style>
</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>
<!-- 按钮-->
<a href="javascript:void(0)" class="button prev"></a>
<a href="javascript:void(0)" class="button next"></a>
<!-- 圆点 -->
<div class="dots" id="dots">
<span class="active"></span>
<span></span>
<span></span>
</div>
</div>
<script type="text/javascript">
function byId(id)
{
return typeof(id)==='string'?document.getElementById(id):id;
}
var main=byId('main'),
timer=null,
index=0,
len=byId('banner').getElementsByTagName('div').length,
pics=byId('banner').getElementsByTagName('div');
function picSlide(){
main.onmouseover=function(){
// 清除定时器
}
main.onmouseout=function(){
setInterval(function(){
index++;
if(index>=len)
{
index=0;
}
changeImg();
},2000)
}
}
function changeImg(){
// for(var i=0;i<len;i++)
// {
// pics[i].style.display='none';
// }
pics[index].style.display="block";
}
picSlide();
</script>
</body>
</html>0
收起
正在回答
2回答
你好同学 , 因为你把如下代码注释了:

这样 ,当你轮播的时候 ,只会把当前的显示 ,而不会把其他的图片隐藏 , 因为当几张图片全部显示的时候 , 默认第一张在最上面 , 如下:

所以会一直显示第一张 . 把注释的加上即可 . 另外 , 建议在函数中自动调用图片轮播的事件 ,当页面打开时 ,默认进行图片切换 :

希望能够帮到你 , 祝学习愉快 ,望采纳 .
前端小白入门系列课程
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星