js图片切换(点击左右按钮,小圆点切换图片,自动轮播)

点击左右按钮,小圆点切换图片

 <div>
        <button>&lt;</button>
        <button class="right">&gt;</button>
        <h2 id="cont">1/4</h2>
        <img src="./img/1.jpg" alt="" id="pic">
        <ul>
            <li class="item"></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <h2 id="foot">one</h2>
    </div>

小圆点的特殊样式

 .item{
            background: lightgreen;
        }

js部分
获取元素
使用数组添加图片及图片信息

  var cont = document.getElementById('cont');
        var foot = document.getElementById('foot');
        var pic = document.getElementById('pic');
        var oli = document.getElementsByTagName('li');
        var btn = document.getElementsByTagName('button');
        var arr = [
            {
                picSrc:'./img/1.jpg',
                picCont : '1/4',
                picFoot:'one'
            },
            {
                picSrc:'./img/2.jpg',
                picCont : '2/4',
                picFoot:'two'
            },
            {
                picSrc:'./img/3.jpg',
                picCont : '3/4',
                picFoot:'three'
            },
            {
                picSrc:'./img/4.jpg',
                picCont : '4/4',
                picFoot:'four'
            }
          
        ];
        var count = 0; //记录点击次数

左边按钮

 //左边按钮
            btn[0].onclick = function () {
                count--;
                if(count<0){
                    // 图片到达第一张,使图片继续往后,即到达最后一张
                    count = arr.length-1;
                }
                for (var j =0; j<oli.length ; j++){//遍历小圆点
                    oli[j].className = '';    //初始化小圆点样式
                }
                 //将点击的次数作为小圆点的下标,改变小圆点的特殊样式
                oli[count].className = 'item'; 
                pic.src = arr[count].picSrc;
                cont.innerHTML = arr[count].picCont;
                foot.innerHTML = arr[count].picFoot;
                
            }

右边按钮

 //右边按钮
            btn[1].onclick = function () {
                count++;
                if(count>arr.length-1){  
                    //如果点击的次数大于已有的图片数(到达最后一张图片),将count重新归0,即回到第一张
                    count = 0;
                }
                for (var j =0; j<oli.length ; j++){  //遍历小圆点
                    oli[j].className = '';   //初始化小圆点样式
                }
                oli[count].className = 'item';
                pic.src = arr[count].picSrc;
                cont.innerHTML = arr[count].picCont;
                foot.innerHTML = arr[count].picFoot;
            }

点击小圆点

 //点击小圆点
            for (var i = 0 ;i<oli.length; i++){
                oli[i].index = i;
                oli[i].onclick = function () {
                    //关键
                    count = this.index;
                    for (var j =0; j<oli.length ; j++){//遍历小圆点
                    oli[j].className = '';    //初始化小圆点样式
                }
                //将点击的次数作为小圆点的下标,改变小圆点的特殊样式
                oli[count].className = 'item';  
                pic.src = arr[count].picSrc;
                cont.innerHTML = arr[count].picCont;
                foot.innerHTML = arr[count].picFoot;
                }
            }

自动轮播

    setInterval(function () {
                console.log(oli.length);
                count++;
                if (count > oli.length-1 ) {
                    count = 0;
                }
                change();
            }, 1000)

效果
在这里插入图片描述

由于代码重复很多,可以使用函数封装

 //封装函数
            }
            function change(){
                for (var j =0; j<oli.length ; j++){
                    oli[j].className = '';  
                }
                oli[count].className = 'item'; 
                pic.src = arr[count].picSrc;
                cont.innerHTML = arr[count].picCont;
                foot.innerHTML = arr[count].picFoot;
            }

使用时调用即可

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值