老师 想请问下clearInterval加在那个数数字的题目前面的话可以让多次点击加速无效

老师 想请问下clearInterval加在那个数数字的题目前面的话可以让多次点击加速无效

但是为什么加在盒子上的话多次点击却不能起到效果呢 请问这是clearInterval定义问题吗 谢谢老师

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

        #two {

            height: 100px;

            width: 100px;

            position: absolute;

            left: 100px;

            top: 100px;

            background-color: orange;

        }

    </style>

</head>

<body>

    <div id="two"></div>

    <button id="one">点我开始</button>

    <script>

        var one=document.getElementById('one');

        var two=document.getElementById('two');

        one.onclick=function(){

            clearInterval(timer);

            var left=100;

            var timer;

           

          timer= setInterval(function(){

                left+=2;

                two.style.left=left+'px';

                if(left>1000)

            {

                clearInterval(timer);

            }

            },10);

        }

    </script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2022-07-28 10:51:59

同学你好,代码逻辑存在问题。变量left的声明是写在点击事件中的,每点击一次,都会重新声明一个left变量,并赋值为100px:

https://img1.sycdn.imooc.com//climg/62e1f85d09697a9105540109.jpg

即:重复多次点击按钮,left会重置,导致短时间内left的值无法满足if语句,从而代码不会执行clearInterval(timer),因此无法解决多次点击加速问题:

https://img1.sycdn.imooc.com//climg/62e1f8d809f094d507280394.jpg

建议将left、timer的声明语句,写在点击事件外面,保证代码中,始终操作同一个left和timer:

https://img1.sycdn.imooc.com//climg/62e1f9600997873807090572.jpg

祝学习愉快!

  • 提问者 慕仙0240544 #1

    老师 还想请问下可以把setinterval里面的函数理解成死循环吗

    2022-07-28 11:02:24
  • 好帮手慕久久 回复 提问者 慕仙0240544 #2

    不算死循环。同学的写法,每点击一次按钮,就会重新生成一个定时器、一个left值,当前的定时器和left值是绑定的;短时间内多次点击,就会造成同时存在多个定时器,定时器叠加,运动会加速(多个运行中的定时器+新生成的定时器)。但是,每一个定时器都是独立的,处于运行中的定时器对应的left值其实是不断增加的,它的left值可以到达1000;当到达1000,这个定时器就会被清除,所以不是死循环。

    2022-07-28 11:20:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师