Выполнения и остановка кода по клику
Добрый день.
Столкнутся с такой проблемой - мне надо что бы код (функция или цикл) начинал выполнятся по клику на кнопку при этом, условие его остановке - второй клик по этой кнопку. Побывал сделать так:
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, время: 12:04. |