轮播代码按照视频写的,为什么实现的效果不一样呢?麻烦老师看一下,已经写了3遍,还是这样的效果

轮播代码按照视频写的,为什么实现的效果不一样呢?麻烦老师看一下,已经写了3遍,还是这样的效果

js代码如下//

var index = 0,

      timer = null,

      pics = byId("banner").getElementsByTagName("div"),

      len = pics.length,

      dots = byId("dots").getElementsByTagName("span"),

       prev = byId("prev"),

       next = byId("next");

function byId(id) {

    return typeof (id) === "string" ? document.getElementById(id) : id;

}


//console.log(len);

function slideImg() {

    var main = byId("main");

    main.onmouseover = function () {

        if (timer) {

            clearInterval();

        }


    }

    main.onmouseout = function () {

        timer = setInterval(function () {

            index++;

            if (index >= len) {

                index = 0;

            }

            changeImg();

        }, 3000)

    }

    main.onmouseout();

    //遍历所有圆点,且绑定事件点击圆点切换图片

    for (var d = 0; d < len; d++) {

        dots[d].id = d;

        dots[d].onclick = function () {

            //改变index当前的索引;

            index = this.id;

            //调用changeinm方法;

            changeImg();

        }

    }

    //点击下一张切换图片

    next.onclick = function () {

        index++;

        if (index >= len) {

            index = 0;

        }

        changeImg();

    }

    prev.onclick = function () {

        index--;

        if (index = 0) {

            index = len - 1;

        }

        changeImg();

    }

}

function changeImg() {

    for (var i = 0; i < len; i++) {

        pics[i].style.display = "none";

        dots[i].className = "";

    }

    pics[index].style.display = 'block';

    dots[index].className = "active";

}

slideImg();

html代码如下//

      <div class="main"  id="main">

          <div class="banner" id="banner">

              <a href="">

                  <div class="banner-slide slide1 side-active"></div>

              </a>

              <a href="">

                  <div class="banner-slide slide2"></div>

              </a>

              <a href="">

                  <div class="banner-slide slide3"></div>

              </a>

          </div>

          <!--上一张,下一张-->

          <!--<div class="btn  prev">&lt;</div>

          <div class="btn  next">&gt;</div>-->

            <a href="javascript:void(0)" class="button prev" id="prev"></a>

          <a href="javascript:void(0)" class="button next" id="next"></a>

          <!--小按钮-->

          <div class="dots" id="dots">

              <span class="active"></span>

              <span></span>

              <span></span>

          </div>

      </div>



    <script src="js/lunbo.js"></script>

//css样式代码如下:

* {

    margin: 0px;

    padding: 0px;

    font-family: "微软雅黑";

}


.main {

    width: 1200px;

    height: 460px;

    overflow: hidden;

    margin: 30px auto;

    position:absolute;

    left:50%;

    margin-left:-600px;

}


.banner {

    width: 1200px;

    height: 460px;

    overflow: hidden;

    position:relative;

}


.banner-slide {

    width: 1200px;

    height: 460px;

    position:absolute;

    background-repeat: no-repeat;

    display:none;

}

.side-active{

    display:block;

}

.slide1 {

   background-image:url("../img/banner.jpg");

}

.slide2 {

   background-image:url("../img/bn2.jpg");

}


.slide3 {

   background-image:url("../img/bn3.jpg");

}

/*.btn{

    width:40px;

    height:80px;

    background:rgba(96,96,96,0.5);

    

    position:absolute;

    left:auto;

    top:50%;

    margin-top:-40px;

    color:#fff;

    font-size:30px;

    line-height:80px;

    text-align:center;

    cursor:pointer;

}*/

.button{

    position:absolute;

    width:40px;

    height:80px;

    background:url(../img/arrow.png) no-repeat center center;

    top:50%;

    margin-top:-40px;

    left:244px;

}

.button:hover{

    background-color:#333;

    opacity:0.5;

    filter:alpha(opacity=20);

}

.prev{

    transform:rotate(180deg);

}

.next{

    left:auto;

    right:0px;

}

.dots{

    position:absolute;

    right:50px;

    bottom:24px;

    text-align:center;

}

.dots span{

    display:inline-block;

    width:12px;

    height:12px;

    line-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;

    margin-left:10px;

}

.dots span.active{

    box-shadow:0 0 0 2px rgba(7,17,27,0.4) inset; 

    background:#fff;

}


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

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

2回答
提问者 慕粉2053247714 2017-05-18 09:36:56

除了点击圆点错乱,还有鼠标划过也是混乱,这也是因为定时器没有成功调用的原因吗?老师

  • 因为每鼠标经过、离开后,都会触发一个定时器,多个定时器一起执行,一定会乱,所以要有清除定时器,即clearInterval(timer); 动手实践下,如还有问题,继续提问,会帮助解决的。同时提问的另一个关于这个案例的问题,参考这个建议调整下呦。如解决你的疑惑,欢迎采纳呦。
    2017-05-18 10:21:44
小于飞飞 2017-05-18 09:32:57

你好,根据你的代码分析,出现鼠标点击圆点是错乱,因为定时器取消没成功,导致都次调用的混乱,建议修改如下:

 if (timer) {
     clearInterval(timer);
 }

动手实践下,希望对你有帮助,祝学习愉快。如解决你的疑惑,欢迎采纳呦。

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

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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