jQuery: $ (документ) .ready (function () {function1 (1)});Как остановить выполнение function1, когда переменная превышает какое-то значение? - PullRequest
0 голосов
/ 21 сентября 2011

Ссылка мигает 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 мигает 10/2 = 5 раз на 300 мс. Как только переменная hide достигает 10, функция 1 ничего не делает (просто проверяет, если (hide <10) неограниченное количество раз рекурсивно). Постскриптум Имеет ли смысл прекратить выполнение функции1? Если да, то как? </p>

Важно: .ready () содержит не только функцию1, но и другие функции. Они должны продолжать работать.

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Когда function1 создает новый тайм-аут для вызова себя снова и снова, просто переместите эту информацию о создании тайм-аута в условие if, чтобы оно запускалось только тогда, когда «hide <10» имеет значение true. Таким образом, он больше не будет работать. </p>

Да, я думаю, имеет смысл останавливать выполнение функции снова и снова, если она ничего не делает.

Ваш код теперь будет выглядеть так:

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. 
}
}.
1 голос
/ 21 сентября 2011
$(document).ready(function() {
    var blink =  setInterval("function1(1)",300);
    //some more functions
});

и для завершения функции:

clearInterval(blink);
...