JavaScript——基于定时器的切图练习

1.实现功能,点击开始时每隔500ms自动切图,点击停止时,停止切图

2.代码短如下

    <style>
        div.box {
            width: 500px;
            margin: 50px auto;
            text-align: center;
            background-color: bisque;
        }

        img {
            width: 100%;

        }
    </style>
    <script>

        window.onload = function () {
            /*
            使图片可以自动切换
            */
            // 获取图片标签
            let img = document.getElementById("img");
            // 封装图片src路径
            arrAll = ["./th (1).jpg", "./th.jpg", "./th2.jpg"];
            let btn = document.getElementById("btn");
            let btn1 = document.getElementById("btn1");
            // 让图片自动切换路径
            let i = 1;
            /*
            声明一个变量用于保存标识。
            注意:在btn单击响应事件外申明,若在点击响应函数内声明则无法保留上一次计时器的timer值,
                  导致每次点击开始时开头的clearInterval将会失效。
            */
            let timer;
            btn.onclick = function () {
                /*
                每点一次定时器便会激活一次定时器
                   点击多次就会开启多个定时器,导致图片切换速度过快,
                   并且我们只能关闭最后一次开启的定时器
                */
                //  在开启定时器之前需要将上一个定时器关闭
                clearInterval(timer);

                timer = setInterval(function () {
                    img.src = arrAll[i];
                    i++;
                    // 设置循环
                    // if (i == arrAll.length) {
                    //     i = 0;
                    // }
                    i = i % arrAll.length;//索引号i自增小于长度则返回原值,当索引号i自增等于长度时,初始化i=0。
                    // 设置单击停止事件
                    btn1.onclick = function () {
                        clearInterval(timer);
                    }
                }, 500);
            }


        }

    </script>
</head>

<body>
    <div class="box">
        <p id="info"></p>
        <img id="img" src="./th (1).jpg" alt="">
        <br>
        <button id="btn">开始</button> <button id="btn1">停止</button>
    </div>
</body>

3.主要需解决问题

      多次点击开始时,出现切图速度倍增。

4.思维导图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值