Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2010, 22:46
Новичок на форуме
Отправить личное сообщение для Александр Степин Посмотреть профиль Найти все сообщения от Александр Степин
 
Регистрация: 20.10.2009
Сообщений: 4

Использование onmousemove и onmouseout. Непонятное совместное срабатывание событый.
Есть такой блок:
<div id="super_vote">
	Пункт1: <span id="num">0</span>
	<div id="vote_line"><div></div></div>
</div>


С помощью скрипта
var vote_line = document.getElementById('vote_line');

vote_line.onmousemove = function(e){
	var mCur = mouseLayerXY(e); // определение координат курсора
	this.firstChild.style.width = (Math.floor(mCur.x/10)*10+10)+"px";
}

vote_line.onmouseout = function(event){
	this.firstChild.style.width = 0;
};

изменяю длину внутреннего div'а у #vote_line с шагом 10px
Все работает нормально, пока не прописал vote_line.onmouseout
Тут начались какие-то перехлесты в выполнении этих событий.
Видать курсор то над внутренним элементом, то над внешним.
Как можно побороть этот казус?
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2010, 23:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Александр Степин
this.firstChild.style.width = 0;
как минимум единицы измерения забыли указать
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2010, 23:13
Новичок на форуме
Отправить личное сообщение для Александр Степин Посмотреть профиль Найти все сообщения от Александр Степин
 
Регистрация: 20.10.2009
Сообщений: 4

Сообщение от monolithed Посмотреть сообщение
как минимум единицы измерения забыли указать
А при нуле ведь можно их не задавать.
Без единиц измерения работает пока нет события vote_line.onmouseout
Т.е. внутренний блок увеличивается нормально, но нужно чтобы при отводе мышки он сбрасывался в ноль.

Пробовал таким способом:
vote_line.firstChild.onmouseout = function(event){
	this.style.width = 0;
};


Все работает, но появляется такой нюанс, что при быстром перемещении мышки не всегда это событие схватывается и длина этого блока не сбрасывается в 0.
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2010, 13:04
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

поменяй onmousemove на onmouseover. и косяки пропадут -речь ведь идёт о взаимоналожении событий?
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2010, 13:48
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

и event в onmouseout тоже лишний
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2010, 13:54
Новичок на форуме
Отправить личное сообщение для Александр Степин Посмотреть профиль Найти все сообщения от Александр Степин
 
Регистрация: 20.10.2009
Сообщений: 4

onmousemove мне нужен чтобы узнавать координаты относительно элемента
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2010, 14:14
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Александр Степин
onmousemove мне нужен чтобы узнавать координаты относительно элемента
логика ведь-при заходе указателя на элемент? зачем тогда нужны координаты? а если отслеживать через координаты тогда и оут нужно убирать и отслеживать это через координаты
Ответить с цитированием
  #8 (permalink)  
Старый 20.12.2010, 00:31
Новичок на форуме
Отправить личное сообщение для Александр Степин Посмотреть профиль Найти все сообщения от Александр Степин
 
Регистрация: 20.10.2009
Сообщений: 4

Сообщение от dmitriymar Посмотреть сообщение
логика ведь-при заходе указателя на элемент? зачем тогда нужны координаты? а если отслеживать через координаты тогда и оут нужно убирать и отслеживать это через координаты
Хм, логично. Не подумал о таком подходе.
Ответить с цитированием
Ответ



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

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