Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Jquery 功能重复的重置计数器_Jquery - Fatal编程技术网

Jquery 功能重复的重置计数器

Jquery 功能重复的重置计数器,jquery,Jquery,我有一个函数,它检查某个元素是否有属性,如果没有找到该属性,该函数将再次运行。直到找到该属性或达到允许该函数调用自身的最大次数为止 var cnt = 0; function myFunction() { if (!$('.myEm').is('[style]') && cnt < 10) { setTimeout(function () { myFunction(); cnt

我有一个函数,它检查某个元素是否有属性,如果没有找到该属性,该函数将再次运行。直到找到该属性或达到允许该函数调用自身的最大次数为止

var cnt = 0;

function myFunction() {
    if (!$('.myEm').is('[style]') && cnt < 10) {
            setTimeout(function () {
                myFunction();
                cnt++;
        }, 3000);
    }
}

myFunction();

我正在努力重置此计数器值。我将一个放在一起,以显示我试图完成的任务。

您需要将计时器的引用存储在一个变量中,然后在更改
选择
元素时调用
clearTimeout()
。在将
cnt
重置回
0
之前,还应删除
var
语句,否则将更改其范围。试试这个:

$(document).on('change', '#myDropDown', function () {
    clearTimeout(timer);
    cnt = 0;
    myFunction();
});

循环将继续运行,因此您不需要再次调用它,只需使用jQuery change函数:

$('#myDropDown').change(function () {
    cnt = 0;
});
编辑:刚刚意识到计时器在10时停止,所以更新了JSFIDLE以在达到10时重新启动计时器循环


请参见此处更新的JSFIDLE:

您正在使用全局变量的更改处理程序中将cnt定义为本地。只需删除更改处理程序中的var

$('#myDropDown').change(function () {
    cnt = 0;
});