Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.12.2009, 05:37
Новичок на форуме
Отправить личное сообщение для Askhsiv Посмотреть профиль Найти все сообщения от Askhsiv
 
Регистрация: 23.10.2009
Сообщений: 9

анимированное меню, многократный setInterval
доброго времени суток уважаемые коллеги, нуждаюсь в помощи!

вобщем делаю менюшку с движущимися тайтлами в разделах при наведении на них.

вот код функций:

function over(id)
{	
	timers = setInterval("move_right("+id+")", 5);
}

function out(id)
{	
	timers = setInterval("move_left("+id+")", 5);
}

function move_right(id)
{
	t = parseInt(document.getElementById('title_'+id).style.paddingLeft, 10);

	document.getElementById('title_'+id).style.paddingLeft = (t+2)+'px';

	if(t > 20) { clearInterval(timers); timers = null; }
}

function move_left(id)
{
	t = parseInt(document.getElementById('title_'+id).style.paddingLeft, 10);

	document.getElementById('title_'+id).style.paddingLeft = (t-2)+'px';

	if(t < 4) { clearInterval(timers); timers = null; }
}


и пэхэпэ:

for($i=0; $i<10; $i++)
	{
		echo "<div id='menu_".$i."' style='width:100px; margin-top:2px; background:#ccc' onmouseover='over(".$i.")' onmouseout='out(".$i.")'>
					<div id='title_".$i."' style='padding-left:0px'>Title_".$i."</div>
			</div>";	
	}


если на один раздел меню наводится, то всё прекрасно двигается, а если с одного раздела на другой передвинуть мышкой, запускается цикличная ошибка. я понимаю что дело в том, что новый элемент меню начинает пользовать те же функции, что и предыдущий, у которого ещё таймер не закончился и счётчики сбиваются. Но как же решить задачу, не 40 же функций делать (по 4 на каждый элемент меню)?

уже пару часов туплю, в 4 утра гениальные решения отказываются посещать мою голову, вот и прошу хелпу
Ответить с цитированием
  #2 (permalink)  
Старый 20.12.2009, 08:59
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

function over(id){    
  document.getElementById('title_'+id)._state=1; 
  setTimeout("move_right("+id+")", 5);
  }
 
function out(id){    
  document.getElementById('title_'+id)._state=0; 
  setTimeout("move_left("+id+")", 5);
  }
 
function move_right(id){
  var e  = document.getElementById('title_'+id);
  if (!e._state) return;
  t = parseInt(e.style.paddingLeft, 10);
  e.style.paddingLeft = (t+2)+'px';
  if(t < 20) setTimeout("move_right("+id+")", 5);
  }
 
function move_left(id){
  var e  = document.getElementById('title_'+id);
  if (e._state) return;
  t = parseInt(e.style.paddingLeft, 10);

  e.style.paddingLeft = (t-2)+'px';
  if(t > 4) setTimeout("move_right("+id+")", 5);
  }


Вообще по поводу анимаций в блоге наверное скоро создам темку. Разработал функцию анимации намного превышающую возможности jQuery.animate этот вопрос смотрю оч трудно емкий для многих начинающих анимашников.

Последний раз редактировалось PeaceCoder, 20.12.2009 в 09:03.
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2009, 13:50
Новичок на форуме
Отправить личное сообщение для Askhsiv Посмотреть профиль Найти все сообщения от Askhsiv
 
Регистрация: 23.10.2009
Сообщений: 9

огромное спасибо!

единственное, если кто ещё будет брать код, в последней строчке надо поправить:

if(t >      2     ) setTimeout("move_     left     ("+id+")", 5);


буду ждать статью)
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2009, 17:32
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

http://javascript.ru/blog/PeaceCoder...sto-o-slozhnom.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
анимированное меню на jquery глючит в ie leCadavreExquis jQuery 3 30.12.2009 17:30
Как "переключать" картинки в меню навигации? KirTer Элементы интерфейса 1 22.06.2009 11:49
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
Ссылка под слоем перекрывает слой Devider Общие вопросы Javascript 7 24.02.2009 23:18