Javascript.RU

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

Как остановить setTimeout ?
Привет всем.
Опять сломал мозг, не могу разобраться. Подскажите в каком направлении двигаться?

Есть две ссылки:
<a onclick='echo_mes(1)'>Иван</a>
<a onclick='echo_mes(2)'>Мыкола</a>


и скрипт:
function echo_mes(name){
	var mesList = $("#helper_txt");
	$.ajax({
		type: 'POST', url: 'blocks/helper_echo_mes.php', data: 'name='+name,
		complete: function(data){
			mesList.html(data.responseText);
			$('#helper_txt').animate({scrollTop: 10000}, 'slow');
			setTimeout(echo_mes(name),3000);
		}
	});
}


Как остановить выполнение setTimeout когда я нажимаю на вторую ссылку? Потому что когда я нажимаю на вторую ссылку начинают поочерёдно выолняться функции с разным name
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2012, 20:07
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

вобщем так можно
[js]var c;
function echo_mes(name){
...
clearTimeout(c);c=setTimeout(echo_mes(name),3000);[js]
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2012, 20:12
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Сделал вот так:
function echo_mes(name){
	var id;
	clearTimeout(id);
	var mesList = $("#helper_txt");
	$.ajax({
		type: 'POST', url: 'blocks/helper_echo_mes.php', data: 'name='+name,
		сomplete: function(data){
		mesList.html(data.responseText);
		$('#helper_txt').animate({scrollTop: 10000}, 'slow');
		id = setTimeout(echo_mes(name),3000);
		}
	});
}


Нифига не пашет. Начинает мигать сначала одно сообщение выбрасывает, потом второе. Хрень какая-то.
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2012, 20:14
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Вообще нужно, чтобы clearTimeout(); срабатывал при клике на вторую ссылку, т.е. отменял предидуший Timeout() и запускал новый.
Ответить с цитированием
  #5 (permalink)  
Старый 01.11.2012, 20:24
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от nematod Посмотреть сообщение
Вообще нужно, чтобы clearTimeout(); срабатывал при клике на вторую ссылку, т.е. отменял предидуший Timeout() и запускал новый.
он и отменяет предыдущий-он же сначала стоит а потом устанавливаем новый таймаут
Ответить с цитированием
  #6 (permalink)  
Старый 01.11.2012, 20:26
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от nematod
Нифига не пашет.
нужно чтоб id был глобальной переменной а у тебя внутри функции-конечно не будет работать
var id сверху напиши

Последний раз редактировалось vadim5june, 01.11.2012 в 20:30.
Ответить с цитированием
  #7 (permalink)  
Старый 01.11.2012, 21:09
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

Сообщение от nematod
setTimeout(echo_mes(name),3000);
*facepalm*
Ответить с цитированием
  #8 (permalink)  
Старый 01.11.2012, 21:13
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

наверно так
setTimeout(function(){echo_mes(name)},3000);
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2012, 18:28
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Не ну я просто в шоке. Почему этот javascript такой нифига не понятный. Как только уже не извращался, всё равно ничего не получается. У меня такое впечатление, что действия javascript вообще не подчиняются никаким правилам, жесть.
Почему php такой интуитивно понятный язык, а javascript вообще для инопланетян написали....
Ответить с цитированием
  #10 (permalink)  
Старый 02.11.2012, 19:29
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от nematod
Почему этот javascript такой нифига не понятный.
Вполне понятный.
Это у вас с ним проблемы
Сообщение от nematod
Как только уже не извращался, всё равно ничего не получается.
Либо лыжи не едут, либо одно из двух
Сообщение от nematod
javascript вообще для инопланетян написали....
Учитывая что он входит в 10-ку самых популярных и используемых языков, инопланетян на планете существенно больше чем людей.
А вообще, проблема скорее в вас
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как узнать значение setTimeout внутри самого setTimeout-а Грабовский Элементы интерфейса 5 12.08.2012 19:27
Как использовать sprit'ы? Hekumok Общие вопросы Javascript 17 10.08.2012 11:24
Ползунок как на YouTube и условие. dailclever Элементы интерфейса 1 23.07.2012 19:51
Как завершить Settimeout() ? libinstyle Events/DOM/Window 7 29.03.2010 12:40