Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Использование onmousemove и onmouseout. Непонятное совместное срабатывание событый. (https://javascript.ru/forum/events/13863-ispolzovanie-onmousemove-i-onmouseout-neponyatnoe-sovmestnoe-srabatyvanie-sobytyjj.html)

Александр Степин 16.12.2010 22:46

Использование 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
Тут начались какие-то перехлесты в выполнении этих событий.
Видать курсор то над внутренним элементом, то над внешним.
Как можно побороть этот казус?

monolithed 16.12.2010 23:01

Цитата:

Сообщение от Александр Степин
this.firstChild.style.width = 0;

как минимум единицы измерения забыли указать

Александр Степин 16.12.2010 23:13

Цитата:

Сообщение от monolithed (Сообщение 84218)
как минимум единицы измерения забыли указать

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

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


Все работает, но появляется такой нюанс, что при быстром перемещении мышки не всегда это событие схватывается и длина этого блока не сбрасывается в 0.

dmitriymar 18.12.2010 13:04

поменяй onmousemove на onmouseover. и косяки пропадут -речь ведь идёт о взаимоналожении событий?

monolithed 18.12.2010 13:48

и event в onmouseout тоже лишний

Александр Степин 18.12.2010 13:54

onmousemove мне нужен чтобы узнавать координаты относительно элемента

dmitriymar 18.12.2010 14:14

Цитата:

Сообщение от Александр Степин
onmousemove мне нужен чтобы узнавать координаты относительно элемента

логика ведь-при заходе указателя на элемент? зачем тогда нужны координаты? а если отслеживать через координаты тогда и оут нужно убирать и отслеживать это через координаты

Александр Степин 20.12.2010 00:31

Цитата:

Сообщение от dmitriymar (Сообщение 84280)
логика ведь-при заходе указателя на элемент? зачем тогда нужны координаты? а если отслеживать через координаты тогда и оут нужно убирать и отслеживать это через координаты

Хм, логично. Не подумал о таком подходе.


Часовой пояс GMT +3, время: 06:33.