请问为什么我的第三张图片播完之后,不是马上接上第一张,而且出现一张空白

请问为什么我的第三张图片播完之后,不是马上接上第一张,而且出现一张空白

我js完全是拷贝的老师的代码

这个是我的html

<div class="slideshow desktop" id="slideshow">
		<!-- <img src="images/image1.jpg"> -->
		<a href="">
			<div class="slide slide1" id="slide1"></div>
		</a>
		
		
		<a href=""><div class="slide slide2" id="slide2"></div></a>
		
		<a href=""><div class="slide slide3 " id="slide3"></div></a>
		
		
		<a href="javascript:void(0)" class="button prev" id="prev"></a>
		<a href="javascript:void(0)" class="button next" id="next"></a>

		<!-- -three little dots- -->
		<div class="dots" id="dots">
			<span class="active"></span>
			<span ></span>
			<span ></span>
		</div>
		
	</div> <!--end of slideshow -->

这个是我的js:


var timer = null,
    index = 0,
    pics = byId("slideshow").getElementsByTagName("div"),
    dots = byId("dots").getElementsByTagName("span"),
    size = pics.length,
    prev = byId("prev"),
    next = byId("next");
    
function byId(id){
  return typeof(id)==="string"?document.getElementById(id):id;
}


// clear the timer, stop autoplay
function stopAutoPlay(){
	if(timer){
       clearInterval(timer);
	}
}

// play the slide show automatically
function startAutoPlay(){
   timer = setInterval(function(){
       index++;
       if(index >= size){
          index = 0;
       }
       changeImg();
   },2000)
}

function changeImg(){
   for(var i=0,len=dots.length;i<len;i++){
       dots[i].className = "";
       pics[i].style.display = "none";
   }
   dots[index].className = "active";
   pics[index].style.display = "block";
}

function slideImg(){
    var main = byId("slideshow");
   
    main.onmouseover = function(){
    	stopAutoPlay();
    }
    main.onmouseout = function(){
    	startAutoPlay();
    }
    main.onmouseout();

    // change slides with dots
    for(var i=0,len=dots.length;i<len;i++){
       dots[i].id = i;
       dots[i].onclick = function(){
           index = this.id;
           changeImg();
       }
    }

    // next slide
    next.onclick = function(){
       index++;
       if(index>=size) index=0;
       changeImg();
    }

    // previous slide
    prev.onclick = function(){
       index--;
       if(index<0) index=size-1;
       changeImg();
    }

   
}

slideImg();

非常感谢!

正在回答

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

3回答

你的html结构跟老师的都不一样,怎么可以直接用它的js呢。图片的长度获取错了,请参考下图修改

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

  • hpbrave 提问者 #1
    非常感谢!我一直觉得我和老师的html结构是一致的 结果刚才看了一下,果然还有其他的div。按照你说的改了之后果然解决问题了。还想再请问一下啊,我现在刚打开页面或者重新刷新页面之后,刚开始并没有显示第一张图片,而是先空白3秒再出现第二张,接下来的轮播倒都是正常的,请问是为什么啊
    2018-03-11 13:50:06
怎么都被占用了呢 2018-03-12 09:40:37

刚开始的时候第一张图片是要默认显示的。可如下修改

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

  • 提问者 hpbrave #1
    非常非常感谢!
    2018-03-12 10:26:25
好帮手慕星星 2018-03-09 14:23:02

可以把你的css代码粘贴一下吗?这样可以更方便的解决问题哦。

  • 提问者 hpbrave #1
    好的 这是我的css .slideshow { display:block; width:1000px; height:500px; margin:0px auto 22px auto; position:relative; border-top:12px solid white; border-bottom:12px solid white; border-left:18px solid white; border-right:18px solid white; box-shadow: 0 0 1px #c0c0c0; overflow:hidden; /*margin-bottom:20px;*/ } .slide { width:960px; height:600px; position:absolute; overflow:hidden; float:left; display:none; } .slide-active{ display:block; } .slide1 { background-image:url('../images/image1.jpg'); } .slide2 { background-image:url('../images/image2.jpg'); } .slide3 { background-image:url('../images/image3.jpg'); } .button { position:absolute; width:40px; height:80px; left:0; top:50%; margin-top:-40px; background:url(../images/arrow.png) no-repeat center center; } .next { left:auto; right:0; } .prev { transform:rotate(180deg); } .button:hover { background-color:#333; opacity:.8; filter:alpha(opacity=80); } .slideshow .dots { position:absolute; bottom:5px; left:50%; margin-left:-27px; } .slideshow .dots span { display:inline-block; width:14px; height:14px; margin-left:6px; border-radius:50%; background-color:rgba(7,17,27,0.4); box-shadow:0 0 0 2px rgba(255,255,255,0.8) inset; cursor:pointer; } .slideshow .dots .active { box-shadow:0 0 0 2px rgba(7,17,27,0.4) inset; background-color:#fff; }
    2018-03-09 19:56:30
  • 提问者 hpbrave #2
    崩溃了 这排版。。。要不要我重新写一个问题 然后把html css js代码都附上?还是这种没换行的 也能凑合看?
    2018-03-09 19:58:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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