【问题标题】:jQuery: $(document).ready(function() {function1(1)}); - how to stop performing function1 when variable exceed some value?jQuery: $(document).ready(function() {function1(1)}); - 当变量超过某个值时如何停止执行function1?
【发布时间】:2011-09-20 22:29:32
【问题描述】:

页面加载时链接在页面上闪烁 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 类在 300 毫秒内闪烁 10/2=5 次。一旦变量 hide 达到 10,function1 什么都不做(只是检查 (hide

重要提示:.ready() 不仅包含 function1,还包含其他函数。他们应该继续工作。

谢谢。

【问题讨论】:

  • 哦,我想我找到了解决方案! if (hide
  • 为什么要将函数排除在ready之外?

标签: function jquery document-ready


【解决方案1】:
$(document).ready(function() {
    var blink =  setInterval("function1(1)",300);
    //some more functions
});

结束函数:

clearInterval(blink);

【讨论】:

  • 抱歉,这样它就不会闪烁,因为你总是将 1 传递给函数。
  • 设置一个全局变量并更新它,而不是通过函数传递它。
  • 是的,设置全局变量后就可以了。我和scravy有同样的问题,但后来我猜到了在哪里声明blink变量。谢谢!
【解决方案2】:

由于 function1 创建一个新的 Timeout 来一次又一次地调用自己,只需将 Timeout-creation 信息移动到 if 子句,以便它仅在“hide

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

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

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. 
}
}.

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多