停止间隔有时不会工作

时间:2016-04-26 08:25:16

标签: javascript jquery setinterval clearinterval

我遇到停止执行某项功能的问题。我有10个函数名为start1,start2,start3,...然后我在函数中编号,就像你在代码片段中看到的那样。所有启动功能只有不同的编号,而另一个始终相同。现在问题是在start3函数之后有时(不是每次)Interval都不会被清除。有时在7.函数之后也会发生这种情况。什么可以导致这种行为?

var valuem = 0, dir = 1;
    start1();
    function start1() {

    $('#number').text(valuem);

    function count1() {
        valuem += dir;
        $('#number').text(valuem);
        if (valuem < 1)  { dir = 1; }       
        console.log("start1");
    }       

     $("body").on({
        'touchstart mousedown': function (e) {

        if ($('#number').text() > 5) {
        window.clearInterval(myVar1);
        $(e.target).off('touchstart mousedown');

    window.setTimeout(function(){ start2(); 
    }, 1000);

        }
        else {
        $(e.target).off('touchstart mousedown');
        clearInterval(myVar1);
        console.log("fail");
        }    
        }
    });    
    var myVar1 = window.setInterval(count1, 1000);
    }


    function start2() {
  valuem = 0, dir = 1;
    $('#number').text(valuem);

    function count2() {
        valuem += dir;
        $('#number').text(valuem);
        if (valuem < 1)  { dir = 1; }       
        console.log("start1");
    }       

     $("body").on({
        'touchstart mousedown': function (e) {

        if ($('#number').text() > 5) {
        window.clearInterval(myVar2);
        $(e.target).off('touchstart mousedown');

    window.setTimeout(function(){ start3(); 

    }, 1000);

        }
        else {
        $(e.target).off('touchstart mousedown');
        clearInterval(myVar2);
        console.log("fail");
        }    
        }
    });    
    var myVar2 = window.setInterval(count2, 1000);
    }

控制台:

5 start3

start4

START3

start4

START3

0 个答案:

没有答案