问答详情
源自:3-3 bug解决及定时器优化

为什么添加了if (timer) { clearInterval(timer) timer=null } 这行代码 幻灯片不会自动播放 ,鼠标移动过去才会自动播放?

<!doctype html>

<html>

<head>

    <meta charset="UTF-8">

<title>Document</title>

<style>

  *{margin:0;

    padding:0;

    list-style:none;}

  .wrap{height:170px;

        width:490px;

        margin:60px auto;

        overflow: hidden;

        position: relative;

        margin:100px auto;}

  .wrap ul{position:absolute;} 

  .wrap ul li{height:170px;}

  .wrap ol{position:absolute;

           right:5px;

           bottom:10px;}

  .wrap ol li{height:20px; width: 20px;

              background:#ccc;

              border:solid 1px #666;

              margin-left:5px;

              color:#000;

              float:left;

              line-height:center;

              text-align:center;

              cursor:pointer;}

  .wrap ol .on{background:#E97305;

               color:#fff;}


  </style>

  <script type="text/javascript">

  window.onload=function(){

    var wrap=document.getElementById('wrap'),

        pic=document.getElementById('pic').getElementsByTagName('li'),

        list=document.getElementById('list').getElementsByTagName('li'),

        index=0,

        timer=null;


      // 定义并调用自动播放函数

      timer=setInterval(qude,2000)

      function qude(){

       index++;

       if (index>=list.length) {

       index=0

       }

       common(index)

       // console.logo(pic)

      }

      if (timer) {

       clearInterval(timer)

       timer=null

      }


      // 定义图片切换函数

     for (var j = 0; j < list.length; j++) {

      list[j].id=j;

      list[j].onmouseover=function(){

      clearInterval(timer);

      common(this.id)

      }

      list[j].onmouseout=function(){

      timer=setInterval(qude,2000)

     }

     };

     // 鼠标划过整个容器时停止自动播放

     function common(curIndex){

      // console.logo(curIndex);

      for (var i = 0; i < list.length; i++) {

       list[i].className="";

       pic[i].style.display="none"

       }

       list[curIndex].className="on"

       pic[curIndex].style.display="block"

       index=curIndex

     }

     

     // 鼠标离开整个容器时继续播放至下一张

    

     // 遍历所有数字导航实现划过切换至对应的图片

   }


  </script>

</head>

<body>

  <div id='wrap'>

    <ul id="pic">

      <li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>

      <li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>

      <li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>

      <li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>

      <li><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt=""></li>    

    </ul>

    <ol id="list">

      <li>1</li>

      <li>2</li>

      <li>3</li>

      <li>4</li>

      <li>5</li>

    </ol>

  </div>

</body>

</html>


提问者:qq_将心灬比心_03371942 2017-08-06 20:54

个回答

  • RebekahNi
    2017-08-08 22:51:31

    你没有调用自动播放函数,如果想页面一加载完毕就自动播放,应该在window。onload()中调用一下自动播放函数,  这样试试:

    function qude(){

           index++;

           if (index>=list.length) {

           index=0

           }

           common(index)

          };qude();

    或者你把timer=setInterval(qude,2000)与

     if (timer) {

           clearInterval(timer)

           timer=null

          }

    位置换一下,你这样设置,不就把timer定时器给null了么