javascript - JS定时器无法清除?

查看:595
本文介绍了javascript - 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无法清除定时器

解决方案

诚邀。

第一次传入true和第二次传入false执行的interval是不一样的。你可以这样试试

 function loginState(is) {
        var clear = is;
        var pints_interval;
        //触发定时器
        pints_interval = setInterval(repeat, 500);
        function repeat() {
            if (clear) {
                console.log('excute interval and the id is: ' + pints_interval );
            } else if (!clear) {
                if (pints_interval) {
                    clearInterval(pints_interval); //清除定时器
                    console.log('clear intervaland the id is: ' + pints_interval );
                    pints_interval = null;
                }
            }
        }
    }

运行上诉代码,你自然就会明白。

所以你的clearInterval函数不应该写在repeat函数中。

这篇关于javascript - JS定时器无法清除?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆