jQuery:$(document).ready(function(){function1(1)}); - 当变量超过某个值时,如何停止执行function1?

时间:2011-09-20 22:29:33

标签: function jquery document-ready

页面加载时链接在页面上闪烁5次。

$(document).ready(function() {
function1(1);
//some more functions
});


function function1(hide){
if((hide<10)){
    if (hide%2==1){
        $('.myclass2').css("color","black");
    }
    else{
        $('.myclass2').css("color","white"); 
    }
    hide = hide+1;

}
else{
  //some code to stop performing of this function. 
}
setTimeout("blinks("+hide+")",300);
}.

结果,类myclass2以300ms闪烁10/2 = 5次。一旦变量hide达到10,则function1什么都不做(只是递归地检查是否(隐藏&lt; 10)无限次数)。 附: 停止执行function1是否有意义? 如果是,那怎么办?

重要说明:.ready()不仅包含function1,还包含其他功能。他们应该继续工作。

谢谢。

2 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
    var blink =  setInterval("function1(1)",300);
    //some more functions
});

并结束功能:

clearInterval(blink);

答案 1 :(得分:1)

当function1创建一个新的Timeout来反复调用时,只需将Timeout-creation信息移动到if子句中,这样只有在“hide&lt;”时才会触发它。 10“是真的。这样它就不会再次表现了。

是的,我想确实有意义地阻止函数一次又一次地执行,如果它没有做任何事情。

您的代码现在看起来像这样:

function function1(hide){
if((hide<10)){
    if (hide%2==1){
        $('.myclass2').css("color","black");
    }
    else{
        $('.myclass2').css("color","white"); 
    }
    hide = hide+1;

    setTimeout("blinks("+hide+")",300); // moved here
}
else{
  //some code to stop performing of this function. 
}
}.
相关问题