Javascript 停止函数jquery的重复

Javascript 停止函数jquery的重复,javascript,jquery,Javascript,Jquery,如何阻止函数重复如果div html=Ready,这是我的代码 (function(){ var Load_Div_Error = $( ".Load_Div_Error" ).html(); if(Load_Div_Error == "Ready") { $( "div.Load_Div_Error" ).text( "Test" ); } setTimeout(arguments.callee, 2000); })(); jQuery的.html(

如何阻止函数重复如果div html=Ready,这是我的代码

  (function(){
   var Load_Div_Error = $( ".Load_Div_Error" ).html();

   if(Load_Div_Error == "Ready") {
    $( "div.Load_Div_Error" ).text( "Test" );
   }
   setTimeout(arguments.callee, 2000);
  })();
jQuery的
.html()
可能会在“Ready”周围返回空格。在比较之前删除它

(function myLoad(){
   var Load_Div_Error = $( ".Load_Div_Error" ).html(); 

   if($.trim(Load_Div_Error) == "Ready") // remove the whitespace before comparing
       $( "div.Load_Div_Error" ).text( "Test" );
   else 
       setTimeout(myLoad, 2000); // run again only if Load_Div_Error != 'Ready'
})();
我已经用命名函数替换了
参数。被调用方
,因为它在严格模式下是被禁止的-最好不要使用它

jQuery的
。html()
可能会在“就绪”周围返回空白。在比较之前删除它

(function myLoad(){
   var Load_Div_Error = $( ".Load_Div_Error" ).html(); 

   if($.trim(Load_Div_Error) == "Ready") // remove the whitespace before comparing
       $( "div.Load_Div_Error" ).text( "Test" );
   else 
       setTimeout(myLoad, 2000); // run again only if Load_Div_Error != 'Ready'
})();

我用命名函数替换了
参数。被调用方
,因为在严格模式下禁止使用它-最好不要使用它

否则
块添加到
if

if(Load_Div_Error == "Ready") {
    $( "div.Load_Div_Error" ).text( "Test" );
} else {
    setTimeout(arguments.callee, 2000);
}

这是
setTimeout
仅当Div content!=就绪

如果,则将
其他
块添加到您的

if(Load_Div_Error == "Ready") {
    $( "div.Load_Div_Error" ).text( "Test" );
} else {
    setTimeout(arguments.callee, 2000);
}

这是
setTimeout
仅当Div content!=就绪

您可以将
超时
设置为一个变量,并在不再需要该变量后将其清除:

(function(){
   var timer;
   var Load_Div_Error = $( ".Load_Div_Error" ).html();

   if(Load_Div_Error == "Ready") {
    $( "div.Load_Div_Error" ).text( "Test" );
    clearTimeout(timer);
   }
   else
    timer = setTimeout(arguments.callee, 2000);
  })();
或者,我正在考虑在使用
setInterval
函数时清除一个间隔,这比使用
setTimeout
更好,IMHO


但是是的,如果您只是添加一个else语句并将
setTimeout
放在其中,它也会起作用,因为
setTimeout
不需要清除。

您可以将
Timeout
设置为一个变量,并在不再需要后清除它:

(function(){
   var timer;
   var Load_Div_Error = $( ".Load_Div_Error" ).html();

   if(Load_Div_Error == "Ready") {
    $( "div.Load_Div_Error" ).text( "Test" );
    clearTimeout(timer);
   }
   else
    timer = setTimeout(arguments.callee, 2000);
  })();
或者,我正在考虑在使用
setInterval
函数时清除一个间隔,这比使用
setTimeout
更好,IMHO


但是是的,如果您只添加一个else语句并将
setTimeout
放在其中,它也会起作用,因为
setTimeout
不需要清除。

ECMAScript的第五版禁止在严格模式下使用arguments.callee()。为了避免
arguments.callee
的潜在问题,命名并使用该名称引用:
(函数checkError(){/*…*/setTimeout(checkError,2000);})(
。ECMAScript的第5版禁止在严格模式下使用参数.callee()。为避免
参数的潜在问题。被调用方
,请命名并使用该名称引用:
(函数checkError()){/*…*/setTimeout(checkError,2000);}()
。注意:您不必手动指定
.replace()
模式。现在是一个标准化方法,可以用于兼容性。注意:您不必手动指定
.replace()
模式。现在是一个标准化方法,可以用于兼容性。