js两个定时器实现轮播图

另辟蹊径实现轮播图的方法:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- jquery网络引用地址 -->
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <title> 两个定时器实现轮播图</title>
</head>

<body>
    <img id="app" src="./images/1.jpg" />
    <br />
    <button id="clear">停止轮播</button>
    <button id="continue">继续轮播</button>
    <button id="pre">上一张</button>
    <button id="next">下一张</button>
    <script>
        //要遍历的图片路径数组
        var images = ['./images/1.jpg', './images/2.jpg', './images/3.jpg'];
        //获取图片对象
        var image = document.getElementById("app");
        //下标
        var index = 0;
        //定时器
        var interval, timeOut = 0;
        $(function () {
            // 绑定清除两个定时器的方法
            $("#clear").click(function () {
                console.log('清除定时器');
                window.clearInterval(interval);
                window.clearTimeout(timeOut);
            });

            // 对两个定时器进行重新赋值
            $("#continue").click(function () {
                console.log('继续执行定时器');
                interval = setInterval(function () {
                    timeOut = setTimeout(() => {
                        if (index > (images.length - 1)) {
                            index = 0;
                        }
                        image.src = images[index];
                        index++;
                    }, 1000);
                }, 1500);
            });

            // 根据下标切换图片
            $("#next").click(function () {
                console.log('下一张')
                index++;
                if (index > (images.length - 1)) {
                    index = 0;
                }
                image.src = images[index];
            });

            // 根据下标切换图片
            $("#pre").click(function () {
                console.log('上一张')
                index--;
                if (index < 0) {
                    index = images.length - 1;
                }
                image.src = images[index];
            });

            // 默认执行主体
            interval = setInterval(function () {
                timeOut = setTimeout(() => {
                    if (index > (images.length - 1)) {
                        index = 0;
                    }
                    image.src = images[index];
                    index++;
                }, 1000);
            }, 1500);

        });
    </script>
</body>

</html>

项目结构:

原文地址:https://www.cnblogs.com/mxh-java/p/13253435.html