Выполнения и остановка кода по клику
Добрый день.
Столкнутся с такой проблемой - мне надо что бы код (функция или цикл) начинал выполнятся по клику на кнопку при этом, условие его остановке - второй клик по этой кнопку. Побывал сделать так: var keytest =-1; function stopkey () { keytest =keytest *(-1); } function run() { if (keytest==(-1)){btest();} for(;;){код} } $(document).ready(function(){ $("#btn0").click(stopkey); $("#btn0").click(run); <!--btn0 - та самая кнопка на которую нужно нажать --> }); Но это код не работает - страница наглухо виснет. Что тут может помочь? Может какой нибудь хитрый тайм-аут или плагин JQuery? |
setTimeout
|
Можно поподробней?
А можно по подробней как это сделать, делал так - не сработало.
var keytest =-1; function runtest() { keytest =keytest *(-1); alert(keytest); if (keytest==(-1)){btest();} for(;;){ setTimeout(runfun(),3000); } } function runfun() { alert("test"); } $(document).ready(function(){ $("#btn0").click(runtest); }); По идеи функция должна вызываться каждые 3 секунды, но она вызывается один раз. |
Нашел свою ошибку
Нашел ошибку в вызове функции runfun, правильно так:
setTimeout(function(){runfun();},3000); Но теперь браузер виснет при запуски функции. |
Бесконечный цикл уберите
|
Цикл выполнится один раз?
Да но без цикла код выполнится только один раз. Я переписал функцию runtest:
function runtest() { keytest =keytest *(-1); if (keytest == (-1)){var intervalID = setInterval(function() runfun();},3000);} if (keytest == (1)){clearInterval(intervalID);} } Но это не останавливает цикл. Подскажите где я мог опять ошибётся? |
intervalID вынесите выше функции
var intervalID; function runtest() { keytest =keytest *(-1); if (keytest == (-1)){intervalID = setInterval(function() runfun();},3000);} if (keytest == (1)){clearInterval(intervalID);} } |
Цитата:
|
Спасибо за помощь
Спасибо Вам zebra :thanks: , переменную intervalID, я глобальной объявить то объявил, только "var" в функцию в писал ещё, вот она каждый раз и объявлялась заново. :)
vadim5june - тут вы немного не правы, как видите это проблему можно решить решить таймъаутом. P.S. Надеюсь что когда нибудь в JavaScript добавят потоки |
Цитата:
Что в итоге получилось-код не приведете? |
Часовой пояс GMT +3, время: 04:40. |