关于图片轮播

关于图片轮播

代码如下:(HTML部分)

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>index</title>

<link rel="stylesheet" href="css/style.css">

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

</head>

<body>

<header>

<div class="aside">

<div class="nav1"></div>

<div class="nav2"></div>

<div class="nav3"></div>

<div class="nav4"></div>

</div>

<div class="main">

<div class="banner">

<div class="banner-terms banner1"><img src="img/bg1.jpg" alt=""></div>

<div class="banner-terms banner2"><img src="img/bg2.jpg" alt=""></div>

<div class="banner-terms banner3"><img src="img/bg3.jpg" alt=""></div>

</div>

<div class="dot">

<div class="dot1"></div>

<div class="dot2"></div>

<div class="dot3"></div>

</div>

<div class="arrows">

<div class="arrows1"></div>

<div class="arrows2"></div>

</div>

</div>

</header>

<section></section>

</body>

</html>

(CSS部分)

*{

margin: 0;

padding: 0;

font-family: "微软雅黑";

font-size: 14px;

}

/* ceshi */

section{

width: 100px;

height: 100px;

background: blue;

}

header{

margin-top: 30px;

width: 100%;

height: 460px;

background: red;

}

header > .main{

height: 100%;

width: 1200px;

margin: 0 auto;


}

header > .main > .banner {

position: relative;

}

header > .main > .banner > .banner-terms{

position: absolute;

top: 0;

left: 0;

display: none;

}

header > .main > .banner > .banner1{

display: block;

}

(JS部分)

window.onload=function(){

//全局变量

var banner=document.getElementsByClassName("banner"),

bannerTerms=document.getElementsByClassName("banner-terms"),

index=0;


//banner自动轮播

function startAutoPlay(){


   timer=setInterval(function(){

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

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

}

index++;

if(index>2){

index=0;

}

bannerTerms[index].style.display="block";

},3000);

}

 //banner停止轮播

  function stopAutoPlay(){

  if(timer){

  clearInterval(timer);

  }

  }


bannerTerms[0].onmouseout=function(){

startAutoPlay();

}

bannerTerms[0].onmouseover=function(){

stopAutoPlay();

}

}


代码写到这里,clearInterval的时候,为什么图片还会继续跳转,知道跳转到第一张图片才停下?

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

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

3回答
Miss路 2017-07-18 10:34:11

你粘上来的代码是没有效果的,出现了一个错误,

  //banner停止轮播

    function stopAutoPlay() {

        if (timer) {

            clearInterval(timer);

        }

    }

这个方法中的timer没有定义,原因是timer是全局变量,需要在全局中声明一下,太粗心了,犯这样的低级错误,以后要注意。如下图修改方式:

http://img1.sycdn.imooc.com/climg//596d735e000139a709900319.jpg


关于你说的“鼠标划过时要等到跳到第一张图才清除定时器。”这个问题,我没有发现。

祝学习愉快!


Miss路 2017-07-17 10:45:19

你的代码是你写的呀,亲爱的,你现在还没有理解这个逻辑,仅仅靠我在这儿以文字的形式给你描述是没有办法给你解释清楚的,建议你在听一下这个课吧?一步一步的来实现。别着急,跟着老师的思路,一个功能一个功能的实现。这里有教你写的视频比我给你描述更形象直观。加油!。

  • 老师的我懂,我按着老师的思路也写了代码。我问的是为什么按照我发的这个代码,清除定时器的时候不是立刻清除,而是一直跳转到第一张图才停止。想不通。
    2017-07-17 19:36:36
Miss路 2017-07-16 00:17:44

整个过程你要理解为什么要清除定时器,有两种情况下需要停止轮播:

1、当鼠标放到某个元素上的时候需要停止轮播

2、当鼠标单击切换的时候需要停止轮播。

首先要把思路缕清晰,一个要求一个要求的来做。不要一起进行,容易乱套。加油!

  • 好的。但是我的这些代码为什么会这样呢,鼠标划过时要等到跳到第一张图才清除定时器。原理是什么??
    2017-07-16 12:51:06
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

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

在线咨询

领取优惠

免费试听

领取大纲

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