Поворот функции и петли setInterval переменной?

0

У меня есть код (он работает), но мне нужно: 1. после нажатия (".my div") функция должна быть остановлена 2. После того, как эта функция должна запускаться после переменного периода времени (может быть 10 секунд, 15, 5, 30).

jQuery(document).ready(function($) {
if (document.getElementById("monitor") !== null){
   var counter = 200;
   var myFunction = function(){
      clearInterval(interval);
      counter *= 10;
      interval = setInterval(myFunction, counter);
   };
   var interval = setInterval(myFunction, counter);
   setInterval(function() { Piano.anim(); }, interval);
}
    Piano.anim = function(){...},1000);
};;

Код работал всегда, и я не знаю, как это исправить.

  • 2
    Звучит немного расплывчато, вы хотите, чтобы это прекратилось, но все же это нужно повторить?
  • 0
    После нажатия кнопки div моя функция должна быть остановлена и запущена через переменный период времени (может быть 10 секунд, 15, 5, 30).
Показать ещё 2 комментария
Теги:
settimeout

2 ответа

0
Лучший ответ

Я не совсем уверен, чего вы пытаетесь достичь, но вы можете попробовать эту логику:

var interval = null;

// the function to be called each second
function x(){
    console.log('running');
}

//start interval
function startInterval(){
    interval = setInterval(x, 1000);
}

// called at (".my div") click
// stop the interval, then restart it after 10 seconds
// save the timeout so it not called more than once
var restartTimeout = null;
function interruptInterval(){
    if(interval && !restartTimeout){
        clearInterval(interval);
        restartTimeout = setTimeout(startInterval, 10000);
    }
}

$(".my div").click(interruptInterval);

startInterval();
  • 0
    Спасибо это то что мне нужно
  • 0
    Извините, я не могу добавить ранг (я новичок здесь и не получил ранг за голосование)! Спасибо вам еще раз!
0

Вы можете использовать функцию clearInterval(), а затем создать новый интервал для повторения его через некоторое время с помощью setTimeout()

var interval = setInterval(myFunction, counter);
//after clicking the .my div
clearInterval(interval);
var second_interval = setInterval(myFunction, counter);//Maybe an other function than myFunction?
  • 0
    не понимаю, как использовать несколько интервалов. Может быть пример?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню