JS定时器无法清除?

 function loginState(is) {

        var msg = $("#submit_btn");

        var count = 0;

        var clear = is;

        var pints_interval;

        //触发定时器

        pints_interval = setInterval(repeat, 500);

        function repeat() {

            if (clear) {

                var mval = msg.val();

                if (count < 3) {

                    count++;

                    mval += ".";

                    msg.val(mval);

                }

                else {

                    msg.val("登录");

                    count = 0;

                }

            } else if (!clear) {

                if (pints_interval) {

                    clearInterval(pints_interval); //清除定时器

                    pints_interval = null;

                }

            }

        }

    }

loginState(true);函数传入true OR false 为什么先传入true启动定时器,之后传入false无法清除定时器

阿波罗的战车
浏览 1602回答 1
1回答

慕标琳琳

诚邀。第一次传入true和第二次传入false执行的interval是不一样的。你可以这样试试&nbsp;function&nbsp;loginState(is)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;clear&nbsp;=&nbsp;is;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;pints_interval;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//触发定时器 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pints_interval&nbsp;=&nbsp;setInterval(repeat,&nbsp;500);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;repeat()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(clear)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('excute&nbsp;interval&nbsp;and&nbsp;the&nbsp;id&nbsp;is:&nbsp;'&nbsp;+&nbsp;pints_interval&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(!clear)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(pints_interval)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearInterval(pints_interval);&nbsp;//清除定时器 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('clear&nbsp;intervaland&nbsp;the&nbsp;id&nbsp;is:&nbsp;'&nbsp;+&nbsp;pints_interval&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pints_interval&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}运行上诉代码,你自然就会明白。所以你的clearInterval函数不应该写在repeat函数中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript