Javascript.RU

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

Последовательность выполнения функций
И снова здрасте!)))

Опять зарылся, подскажите хоть в каком направлении двигаться!?

У меня два элемента:
<a>Ссылка</a>
и
<div>Див</div>

И две функции: 1-я аяксом вытягивает данные из базы, 2-я выводит данные в tooltip.

Последовательность действий и проблема:
1. Навожу на ссылку
2. Выполняется первая функци и помещает результат в блок div
3. Выполняется вторая функция и выводит всплывающую подсказку со значением из блока div
ПРОБЛЕМА:
Навожу на ссылку всплывает пустой тултипс, навожу повторно выдаёт нужный результат. Получается вторая функция работает с опозданием или первая. Шо менi робить? ))))
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2011, 08:59
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Вы забыли, что аякс асинхронный. Браузер при исполнении скрипта не будет ждать, пока придет результат, а пойдет дальше - выводить подсказку. Которой нет.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2011, 13:09
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

не знаю налетал на подобное -хоть и знал что данные уже загружены полностью. выходил из этого принудительным вызовом функции в перевый раз. как раз это момент прогона с пустотой
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2011, 13:19
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Спасибо за помощь, я уже разобрался.
Решил проблему следующим образом:
function Hover(book,part,verse){
			var mes = $("#verse");
			$.ajax({
				type: "POST", url: "путь к php обработчику", data: "Здесь я передаю данные которые пришли от ссылки: book,part,verse",
				complete: function(data){ mes.html(data.responseText); var mess = document.getElementById('verse').innerHTML; tooltip.show(mess);}
			});
		}

Как видите, я загнал выполнение второй функции в "complete:" и всё заработало как нужно.

Надеюсь кому-нибудь пригодится.
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2011, 00:51
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

И снова здравствуйте!
javascript как азартная игра, только зацепись... ))))

Решение одной проблемы повлекло за собой появление другой.

Объясняю суть проблемы:
при случайном перемещении курсора над ссылкой происходит следующее:
1. посылается запрос ajax для извлечения из БД информации, который занимает от 0,2 до 0,5 секунды.
2. в тот момент когда послан запрос, курсор мышы уже покинул область ссылки и сработала функция tooltip.hide(); которая "закрыла" ещё не открывшийся tooltip
3. после завершения запроса ajax, выполняется функция tooltip.show(mess); которая открывает tooltip, намертво привязывая его к курсору.

Жду любых предложений решения проблемы
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2011, 00:56
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от nematod
в тот момент когда послан запрос, курсор мышы уже покинул область ссылки и сработала функция tooltip.hide(); которая "закрыла" ещё не открывшийся tooltip
запрети выполнение её,введи флаг. если ответ не получен то он -0,если получен 1.
проверка в функции -если флаг 0-то не выполнять её
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2011, 11:01
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Пример можешь привести?
Ответить с цитированием
  #8 (permalink)  
Старый 25.02.2011, 03:16
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Решил проблему как в армии, вместо ховера для вызова функции установил онклик. Всё ничего, но появилась новая проблема)))
Позиционирование тултипа происходит при движении мышкой:
document.onmousemove = this.pos;

а т.к. я установил онклик, после клика мышь не двигается и тултип всплывает хрензнаетгде! ШоМенiРобить?)))
Жду свежих идей, свои уже закончились.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие со скриптом на протяжении его выполнения Malgin AJAX и COMET 6 23.08.2010 22:39
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20
Скорость выполнения кода mycoding Общие вопросы Javascript 6 23.04.2010 13:28
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
Последовательность выполнения в динамическом js sovka Общие вопросы Javascript 2 18.10.2008 15:58