JS基础16-轮播图的实现(二维数组实现多变量同时滚动)

本次介绍用更改图片地址的方式来实现轮播图

1.一维数组变量更改地址实现轮播图

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图</title>
<style>
    #pic{
        margin: 50px auto;
        height: 400px;
        width: 800px;
    }    
</style>
<script type="text/javascript">
    //声明一个数组变量存放图片地址
    var arr=["picture/01.jpg","picture/02.jpg","picture/03.jpg","picture/04.jpg","picture/05.jpg","picture/06.jpg","picture/07.jpg","picture/08.jpg","picture/09.jpg"]
    //声明一个变量n
    var n=0;
    //每次点击时调用的函数
    function changeImg(curr){
        //获取到点击时的value值,代表要跳转的第几张图片
            n=curr.value;//3代表第三张 arr[2]代表地址
        var v=curr.value-1;//代表数组下标
        //将图片地址更改为数组中的第n个元素来实现更改图片
        document.getElementById("img_").src=arr[v];    
    
    }
    //上一张
    function up(){
        n--;//2 代表第二张 arr[1];
        //点击后判断 若n=0,将图片地址改为最后一张
        if(n==0){
            n=arr.length-1;
        }else
        document.getElementById('img_').src=arr[n-1];
    }
    function down(){
        n++;
        //若到了最后一张,将图片地址改为第一张
        if(n==arr.length+1){
            n=0;
        }
        document.getElementById('img_').src=arr[n];
    }
    function remove(){
        clearInterval(l);
    }
    function cancle(){
        setInterval("down()",1000);
    }
    var l=0;
    window.onload=function(){
        //设置定时器,每隔多少秒调用下一张的函数,实现图片的自动播放
        l=setInterval("down()",1000);//每隔一秒
        //当鼠标移入时 调用remove函数,清除定时器,图片不再轮播
        document.getElementById('img_').addEventListener("mouseover",remove);
        //当鼠标移出,重新设置定时器,每隔多少秒调用下一张的函数,重新轮播
        document.getElementById('img_').addEventListener("mouseout",cancle);
    }
    
</script>
</head>

<body>
<div id="pic">
<img src="picture/01.jpg" alt="" id="img_"><br>
<input type="button" value="上一张" onClick="up()">
<input type="button" value="1" onClick="changeImg(this)">
<input type="button" value="2" onClick="changeImg(this)">
<input type="button" value="3" onClick="changeImg(this)">
<input type="button" value="4" onClick="changeImg(this)">
<input type="button" value="5" onClick="changeImg(this)">
<input type="button" value="6" onClick="changeImg(this)">
<input type="button" value="7" onClick="changeImg(this)">
<input type="button" value="8" onClick="changeImg(this)">
<input type="button" value="9" onClick="changeImg(this)">
<input type="button" value="下一张" onClick="down()">
</div>
</body>
</html>

2.二维数组实现多变量的同时轮播

var n=0;
var p=0;
var oTcartxt=document.getElementById('car-txt-num');
//声明一个二维数组,二维数组可以理解为数组嵌套数组,将一维数组中的每个元素换成一个个一维数组
var arrCarouselpic=[
    ["topPic/01.jpg","梧桐盛开的街角,那间悠闲的小店,都充满了橘色的记忆,暖湿的气流和美酒的苦涩","穷游锦囊|意大利","丽江"],
    ["topPic/02.jpg","远处的冰山,极昼的光芒,三色堇忧伤","穷游锦囊|冰岛","大理"],
    ["topPic/03.jpg","文明古国,尼罗河的忧伤,埃及神秘之旅","穷游锦囊|埃及","香格里拉"],
    ["topPic/04.jpg","世界这么大,我想跟你一起去看看","穷游锦囊|加拿大","西双版纳"],
    ["topPic/05.jpg","炊烟袅袅升起而我在等你,秋色被打捞起晕开了结局","穷游锦囊|科兹沃尔德","昆明"]];
//向前滚动,变量n自加
function fTopcarousel(){
     n++;
    //判断n是否到了最后一张
     if(n==arrCarouselpic.length){
         //如果到了就从头开始
         n=0;
     }
    //更改图片地址
    document.getElementById('carousel-Pic').src=arrCarouselpic[n][0];//第n个数组中的第一个元素,即图片地址
    oTcartxt.innerHTML=n+1;
    oTcattxtword.innerHTML=arrCarouselpic[n][1];//第n个数组中的第2个元素
    oTcartxtcountry.innerHTML=arrCarouselpic[n][2];
    sPlaceho.setAttribute("placeholder",arrCarouselpic[n][3]);
 }
function fTback(){
    if(n==0){
        n=arrCarouselpic.length;
    }
    n--;
    document.getElementById('carousel-Pic').src=arrCarouselpic[n][0];
    oTcartxt.innerHTML=n+1;
    oTcattxtword.innerHTML=arrCarouselpic[n][1];
    oTcartxtcountry.innerHTML=arrCarouselpic[n][2];
    sPlaceho.setAttribute("placeholder",arrCarouselpic[n][3]);
}
//设置定时器,每隔n秒调用下一页函数
//鼠标移入清除,移出重新设置定时器
function cancel(){
    clearInterval(timer);
}
function start(){
    timer=setInterval("fTopcarousel()",3000);
}

效果:

搜索框中的地名和右下角的数字和文字都随着图片一起滚动

 

posted @ 2018-03-27 14:55  LuckyGJX  阅读(296)  评论(0编辑  收藏  举报