javascript如何制作简单的图片轮播,带有数字选择,鼠标悬停暂停轮播,离开时继续轮播图片

直接上代码,代码有注释:
要想做图片轮播,需要知道以下知识点:
定时函数:

window对象:
window.setInterval("执行的方法名",间隔时间(毫秒)):返回值是一个用来停止计时器的ID
window.clearInterval(计时器的ID):清除定时器,无返回值

图片轮播靠的是定时器,定时执行方法去切换图片,切换 img标签下的src属性,以此来切换图片,
鼠标悬停时停止轮播,是依靠鼠标悬停事件onmouseover和鼠标移出事件onmouseout.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
<script type="text/javascript">
    //设置全局变量,统计播放图片的顺序
    var imgIndex=1;//从第一张图片开始轮播
    var imgCount=6;//总共有6张图片
    var liObjs=document.getElementById("scroll_number").getElementsByTagName("li");
/**
 * 实现图片轮播
 * _args  传入的是数字(第几张图片)鼠标悬停时才会传入参数
 */
function loopShow(_args){//当鼠标移入时,执行鼠标移入事件,执行带参数的方法,参数值在index.html中的loopShow()方法中的参数传入
    if(_args){//如果参数存在,代表触发了鼠标悬停事件,那么需要停止计时器
        imgIndex=_args;
        window.clearInterval(myTime);//停止定时器
    }
    //1、图片轮播
    var imgObj=document.getElementById("dd_scroll");
    //1.1、设置显示第几张图片
    //1.2、设置数字的背景色(显示的是第几张图片)
    for(var i=0;i<liObjs.length;i++){
        if(i==imgIndex-1){
        //图片的名字只有一个数字的区别,所以切换图片只需要修改图片名字的一个数字
            imgObj.setAttribute("src","images/dd_scroll_"+imgIndex+".jpg");//图片显示
            liObjs[i].className="scroll_number_over";//数字背景
        }else{
            liObjs[i].className="scroll_number_out";
        }
        /*添加移出事件,只能写一个,写在这里或者onload事件里面都一样可以
        liObjs[i].onmouseout=function(){
            myTime=window.setInterval("loopShow()",1000);
        }*/
    }

    //imgIndex++代表继续显示下一张图片
    imgIndex++;
    if(imgIndex>imgCount) {//如果图片编号大于中的图片数量,就重新赋值为1,从第一张开始轮播
        imgIndex=1;
    }

}
var myTime;//全局变量,用于记录定时器的ID,便于在loopshow()方法中使用

window.onload=function(){
    //设置定时器定时执行轮播,方法需要参数,就算不给参数也能执行.
    myTime=window.setInterval("loopShow()",1000);
    //添加移出事件,鼠标移开数字
    for(var i=0;i<liObjs.length;i++){
        liObjs[i].onmouseout=function(){
            myTime=window.setInterval("loopShow()",1000);//返回的myTime是一个用来停止计时器的ID

        }
    }
    </script>
        <style type="text/css">
        .scroll_number_out{
        }
        .scroll_number_over{//设置数字的样式,当鼠标停在数字上时,给数字加点背景色和字体颜色.
            background-color:#F96;
            color:#FFF;
        }
    </style>

    </head>
    <body>
        <!--轮换显示的横幅广告图片-->
        <div class="scroll_top"></div>
        <div class="scroll_mid"> <img src="images/dd_scroll_2.jpg" alt="轮换显示的图片广告" id="dd_scroll"/>
            <div id="scroll_number">
                <ul><!--鼠标悬停时才会触发事件,传入参数-->
                    <li id="scroll_number_1" onmouseover="loopShow(1)">1</li>
                    <li id="scroll_number_2" onmouseover="loopShow(2)">2</li>
                    <li id="scroll_number_3" onmouseover="loopShow(3)">3</li>
                    <li id="scroll_number_4" onmouseover="loopShow(4)">4</li>
                    <li id="scroll_number_5" onmouseover="loopShow(5)">5</li>
                    <li id="scroll_number_6" onmouseover="loopShow(6)">6</li>
                </ul>
            </div>
        </div>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_33442160/article/details/81488586
今日推荐