Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2012, 15:53
Интересующийся
Отправить личное сообщение для Партизан Посмотреть профиль Найти все сообщения от Партизан
 
Регистрация: 15.04.2012
Сообщений: 14

Выполнения и остановка кода по клику
Добрый день.

Столкнутся с такой проблемой - мне надо что бы код (функция или цикл) начинал выполнятся по клику на кнопку при этом, условие его остановке - второй клик по этой кнопку.
Побывал сделать так:

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?
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2012, 15:57
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

setTimeout
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2012, 14:01
Интересующийся
Отправить личное сообщение для Партизан Посмотреть профиль Найти все сообщения от Партизан
 
Регистрация: 15.04.2012
Сообщений: 14

Можно поподробней?
А можно по подробней как это сделать, делал так - не сработало.

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 секунды, но она вызывается один раз.
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2012, 14:12
Интересующийся
Отправить личное сообщение для Партизан Посмотреть профиль Найти все сообщения от Партизан
 
Регистрация: 15.04.2012
Сообщений: 14

Нашел свою ошибку
Нашел ошибку в вызове функции runfun, правильно так:
setTimeout(function(){runfun();},3000);


Но теперь браузер виснет при запуски функции.
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2012, 14:21
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Бесконечный цикл уберите
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2012, 16:37
Интересующийся
Отправить личное сообщение для Партизан Посмотреть профиль Найти все сообщения от Партизан
 
Регистрация: 15.04.2012
Сообщений: 14

Цикл выполнится один раз?
Да но без цикла код выполнится только один раз. Я переписал функцию runtest:

function runtest()
	{
	keytest =keytest *(-1);
	if (keytest == (-1)){var intervalID = setInterval(function()   runfun();},3000);}
		if (keytest == (1)){clearInterval(intervalID);}
	}

Но это не останавливает цикл. Подскажите где я мог опять ошибётся?
Ответить с цитированием
  #7 (permalink)  
Старый 09.05.2012, 16:50
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

intervalID вынесите выше функции

var intervalID;
function runtest()
	{
	keytest =keytest *(-1);
	if (keytest == (-1)){intervalID = setInterval(function()   runfun();},3000);}
		if (keytest == (1)){clearInterval(intervalID);}
	}
Ответить с цитированием
  #8 (permalink)  
Старый 09.05.2012, 17:33
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Партизан Посмотреть сообщение
Добрый день.

Столкнутся с такой проблемой - мне надо что бы код (функция или цикл) начинал выполнятся по клику на кнопку при этом, условие его остановке - второй клик по этой кнопку.
Побывал сделать так:
Ничего не поможет когда javascript выполняет цикл то до его окончания он нереагирует на прерывания ни мышки ни таймера и комп будет виснуть
Ответить с цитированием
  #9 (permalink)  
Старый 12.05.2012, 20:14
Интересующийся
Отправить личное сообщение для Партизан Посмотреть профиль Найти все сообщения от Партизан
 
Регистрация: 15.04.2012
Сообщений: 14

Спасибо за помощь
Спасибо Вам zebra , переменную intervalID, я глобальной объявить то объявил, только "var" в функцию в писал ещё, вот она каждый раз и объявлялась заново.

vadim5june - тут вы немного не правы, как видите это проблему можно решить решить таймъаутом.

P.S.

Надеюсь что когда нибудь в JavaScript добавят потоки
Ответить с цитированием
  #10 (permalink)  
Старый 12.05.2012, 20:27
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Цитата:
vadim5june - тут вы немного не правы, как видите это проблему можно решить решить таймъаутом.
Не может быть
Что в итоге получилось-код не приведете?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой есть обработчик событий, который будет запускаться после выполнения всего кода? KamalovRadik jQuery 12 08.11.2011 07:14
остановка выполнения setInterval olejan Общие вопросы Javascript 7 16.05.2011 23:19
Остановка выполнения функции Woody jQuery 12 18.01.2011 13:00
Скорость выполнения кода mycoding Общие вопросы Javascript 6 23.04.2010 13:28
Остановка выполнения скрипта parzh-junior Элементы интерфейса 0 12.12.2009 13:58