从 逻辑上来看 ,你设置了定时器 就不要用 for 循环了...
按你的写法 是每隔1秒钟就把所有图片闪现一边 而不是每一秒中换一幅图片.
改成下面试一下 , 代码未调试
<script>window.onload=setInterval(myvar(),1000)
jpgindex=0
var arr=new Array("","img/btn_01.jpg","img/btn_02.jpg","img/btn_03.jpg","img/btn_04.jpg")
function myvar(){
var src=document.getElementById("demo")
src.src=arr[jpgindex]
if(jpgindex=arr.length-1){
jpgindex=0
console.log(jpgindex)
}else{
jpgindex++
}
</script>
跟普通的左右切换轮播图类似,但是它看起来是首尾相连的。
首先来讲一下我的思路:
我们要想无缝切换图片,必须要在所有图片的最后添加一张第一张图片,因为要实现从最后一张切换到第一张时有过渡效果;
之后我们要让你处在第一张时,向前向后切换都要进行 隐式切换 。
我们也可以将所有的轮播图的图片外面套一层div,并设置绝对定位,然后使用 父相子绝 ,来让图片可以相对父元素定位(父元素就是装轮播图的盒子)
之后,只要我们让不该显示的图片定位到盒子范围外的位置(父元素设置overflow:hidden),在需要切换图片时,我们就把当前图片前后的图片定位到对应位置,然后通过setInterval方法循环改变其位置实现轮播效果。之后更改当前图片的索引即可。