老师,请问下面的代码,为啥点击按钮,不能实现切换图片的功能呢?

老师,请问下面的代码,为啥点击按钮,不能实现切换图片的功能呢?

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>轮播图片</title>
    <link rel="stylesheet" href="img.css">
</head>
<body>
    <div class="box" id="box">
        <div class="banner" id="banner">
            <div class="slide active"><img src="img/bg1.jpg"/></div>
            <div class="slide"><img src="img/bg2.jpg"/></div>
            <div class="slide"><img src="img/bg3.jpg"/></div>
        </div>
        <a href="" class=" button prev" id="prev"><img src="img/arrow.png"/></a>
        <a href="" class="button next" id="next"><img src="img/arrow.png"/></a>
    </div>
    <script src="img.js"></script>
</body>
</html>


CSS:

*{
    margin:0;
    padding:0;
}
.box{
    width:1200px;
    height:460px;
    margin:30px auto;
    position:relative;
}
.box .banner{
    width:1200px;
    height:460px;
    overflow:hidden;
       
}
.box .banner .slide{
    display:none;
}
.box .banner .active{
    display:block;
}
.box .button{
    display:block;
    width:45px;
    height:80px;
    position:absolute;
    top:50%;
    left:244px;
    margin-top:-30px;
    text-align:center;
    line-height:100px;
}
.button:hover{
    background:rgba(7,17,27,0.6);
}
.box .prev{
    transform:rotate(180deg);
}
.box .next{
    left:auto;
    right:0px;
}


JS:

// 封装一个取id的函数
function getId(id){
    return typeof(id)?document.getElementById(id):id;
}
// 封装一个滑动图片的函数
function slideImg(){
    var time=null,
    banners=getId('banner').getElementsByTagName('div'),
    index=0,
    banner=getId('banner'),
    prev=getId('prev'),
    next=getId('next');
     // 鼠标滑过banner,图片停止自动切换
     banner.onmouseover=function(){
         clearInterval(time);
     }
     //鼠标滑出banner,图片继续自动切换
     banner.onmouseout=function(){
         slideImg();
     }
    // 定时自动切换图片
    var time=setInterval(function(){
           index++;
           if(index>=banners.length){index=0;}
           changeImg();
    },2000)
    // 给前后的button分别绑定事件
     prev.onclick=function(){
         index--;
         if(index<0){index=2}
        changeImg()
 }
     next.onclick=function(){
        index++;
        if(index>2){index=0}
        changeImg()
    }

    // 遍历图片统一先隐藏,再跟进Index找到对应图片添加显示效果
function changeImg(){
    for(var i=0;i<banners.length;i++){
        banners[i].style.display="none";
    }
        banners[index].style.display="block";
}
}
slideImg()

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

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

2回答
妮可妮可妮_ 2018-10-19 17:10:01

同学你好,没有看清您的代码对你的学习造成的不便非常抱歉,关于您上面的代码点击切换按钮不能实现效果主要是因为a标签没有阻止跳转,对页面进行了刷新,建议使用 javascript:; 表示什么都不执行,这样点击时就没有任何反应。 

如下图所示:

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

祝学习愉快!

  • 提问者 慕尼黑4757019 #1
    谢谢老师,已经正常了!
    2018-10-19 18:55:54
妮可妮可妮_ 2018-10-19 12:11:22

同学你好

已经在其他问答中回答了你的问题,以下为链接:

http://class.imooc.com/course/qadetail/73115

祝学习愉快!

  • 提问者 慕尼黑4757019 #1
    老师,这是另外一个轮播图,我刚刚试了好半天,还把之前跟着视频一起写的代码对照看了,还是找不到这个点击没有切换图片的原因,麻烦您指点一下迷津~谢谢!
    2018-10-19 15:15:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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