Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearTimeout(var)未清除var超时_Javascript_Settimeout_Cleartimeout - Fatal编程技术网

Javascript clearTimeout(var)未清除var超时

Javascript clearTimeout(var)未清除var超时,javascript,settimeout,cleartimeout,Javascript,Settimeout,Cleartimeout,项目--> 说明-->当不再选中复选框时,我想清除此函数的超时 var holder2 = setTimeout(function() { $("#matrix2").css('display','block'); },26570); 当你点击矩阵时,小青蛙应该在26秒后开始跳舞,问题是,如果你取消矩阵模式并点击提交(假设在22秒),然后再次快速启用矩阵模式,青蛙将在4秒后而不是26秒后开始跳舞,因为超时仍在运行 问题->这不起作用: clearTimeout(holder2);

项目-->
说明-->当不再选中复选框时,我想清除此函数的超时

  var holder2 = setTimeout(function() { 
  $("#matrix2").css('display','block'); },26570);
当你点击矩阵时,小青蛙应该在26秒后开始跳舞,问题是,如果你取消矩阵模式并点击提交(假设在22秒),然后再次快速启用矩阵模式,青蛙将在4秒后而不是26秒后开始跳舞,因为超时仍在运行

问题->这不起作用:

clearTimeout(holder2);
还尝试:

holder2.clearTimeout();
整个代码

$("#Confirm").on('click', function () {
    if (document.getElementById('matrixcheckbox').checked) {
        matrixreset();
        $("#unmute").show();
        $("#matrix2").css('visibility', 'visible');
        player.playVideo();

        var holder = setTimeout(function () {
            $("#matrix1").css('display', 'block');
        }, 1900);
        var holder2 = setTimeout(function () {
            $("#matrix2").css('display', 'block');
        }, 26570);

        $("#pi").css('background-image', 'url(' + 'http://i1007.photobucket.com/albums/af198/GoDHanD/My%20FS%20Profile/RedMatrix.gif' + ')');
    } else {
        matrixreset();
        clearTimeout(holder);
        clearTimeout(holder2);
    }
});

这是一个范围问题,在单击处理程序之外定义变量,如下所示

var holder,holder2;

$("#Confirm").on('click', function () {
    if (document.getElementById('matrixcheckbox').checked) {
        matrixreset();
        $("#unmute").show();
        $("#matrix2").css('visibility', 'visible');
        player.playVideo();

        holder = setTimeout(function () {
            $("#matrix1").css('display', 'block');
        }, 1900);
        holder2 = setTimeout(function () {
            $("#matrix2").css('display', 'block');
        }, 26570);

        $("#pi").css('background-image', 'url(' + 'http://i1007.photobucket.com/albums/af198/GoDHanD/My%20FS%20Profile/RedMatrix.gif' + ')');
    } else {
        matrixreset();
        clearTimeout(holder);
        clearTimeout(holder2);
    }
});

这是一个范围问题,在单击处理程序之外定义变量,如下所示

var holder,holder2;

$("#Confirm").on('click', function () {
    if (document.getElementById('matrixcheckbox').checked) {
        matrixreset();
        $("#unmute").show();
        $("#matrix2").css('visibility', 'visible');
        player.playVideo();

        holder = setTimeout(function () {
            $("#matrix1").css('display', 'block');
        }, 1900);
        holder2 = setTimeout(function () {
            $("#matrix2").css('display', 'block');
        }, 26570);

        $("#pi").css('background-image', 'url(' + 'http://i1007.photobucket.com/albums/af198/GoDHanD/My%20FS%20Profile/RedMatrix.gif' + ')');
    } else {
        matrixreset();
        clearTimeout(holder);
        clearTimeout(holder2);
    }
});

这是一个范围问题。每次执行此回调函数时,它将:

  • 立即为
    holder
    holder2
    ()创建新的未定义变量
  • 输入条件

    a。或者为这些新变量赋值

    b。或者对未定义的变量运行
    clearTimeout

  • 在任何时候都没有定义和清除变量

    解决方案是在回调外部声明timeoutID变量,以便在调用之间保持该变量(第一行):


    这是一个范围问题。每次执行此回调函数时,它将:

  • 立即为
    holder
    holder2
    ()创建新的未定义变量
  • 输入条件

    a。或者为这些新变量赋值

    b。或者对未定义的变量运行
    clearTimeout

  • 在任何时候都没有定义和清除变量

    解决方案是在回调外部声明timeoutID变量,以便在调用之间保持该变量(第一行):


    这可能是一个作用域问题,显示整个代码,以便我们可以看到
    clearTimeout(holder2)中的作用域
    holder2
    是正确的方法。在您试图调用它的地方,
    holder2
    无法访问,或者您在此期间分配了一个新值。请阅读。我已经更新了整个代码和代码笔链接。你们知道我能做什么吗?“我不会浪费30秒的时间等青蛙跳舞”这句话我从没想过我会写。。。阅读@FelixKling提供的链接;删除与当前问题无关的任何代码。这可能是一个范围问题,请显示整个代码,以便我们可以看到
    clearTimeout(holder2)中的
    holder2
    范围是什么是正确的方法。在您试图调用它的地方,
    holder2
    无法访问,或者您在此期间分配了一个新值。请阅读。我已经更新了整个代码和代码笔链接。你们知道我能做什么吗?“我不会浪费30秒的时间等青蛙跳舞”这句话我从没想过我会写。。。阅读@FelixKling提供的链接;删除任何与当前问题无关的代码。谢谢,问题是我也尝试过,但函数变量旁边也有var,所以它只会创建一个新变量。;)谢谢,我也试过了,但函数变量旁边也有var,所以它只会创建一个新变量。;)谢谢,我也试过了,但函数变量旁边也有var,所以它只会创建一个新变量。;)谢谢,我也试过了,但函数变量旁边也有var,所以它只会创建一个新变量。;)