Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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/jQuery setInterval/clearInterval_Jquery_Plugins_Setinterval - Fatal编程技术网

javascript/jQuery setInterval/clearInterval

javascript/jQuery setInterval/clearInterval,jquery,plugins,setinterval,Jquery,Plugins,Setinterval,我使用setInterval检查p(html段落)是否有特定的文本值。如果有,我想清除一个持续代码流。我在jQuery插件中使用了它,所以如果段落有tat文本值,我想清除interval,然后继续使用回调函数。 所以我试过这样的方法: var checkTextValue = setInterval(function(){ var textVal = $('p').text(); if(tex

我使用setInterval检查p(html段落)是否有特定的文本值。如果有,我想清除一个持续代码流。我在jQuery插件中使用了它,所以如果段落有tat文本值,我想清除interval,然后继续使用回调函数。 所以我试过这样的方法:

var checkTextValue = setInterval(function(){
                          var textVal = $('p').text();
                          if(textVal == 'expectedValue'){
                              clearInterval(checkTextValue);
                              callback();
                          } 
                     },10);
回调函数是一个简单的警报。
我的问题是警报被无休止地调用。我如何编写代码来正确地执行它?谢谢

使用setTimeout而不是setInterval

比如:

var checkTextValue = setTimeout(function() {
    var textVal = $('p').text();
    if (textVal == 'expectedValue'){
        callback();
    } else {
        setTimeout(arguments.callee, 10);
    }
},10);

总的来说,我同意这是一个更好的方法。但这并没有真正回答为什么代码不起作用的问题。好吧,这是可行的,但现在的问题是,在firefox中,我仍然可以看到动画和加载条,就像页面正在加载和消息传输数据……这应该是无关的。setTimeout与内部方法调用有关,而Firefox加载指示器与外部HTTP请求有关。这是一个老问题,但…我无法重新编写此()命令,我也看不出这不起作用的任何原因。我想一定还有别的事。查看发生了什么最简单的方法是a)删除回调,b)console.log记录checkTextValue/outside/The函数的值,c)console.log记录checkTextValue/inside/The函数的值。您可能也希望将计时器增加到大于10的值。