Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: 4you от 09 Января 2006, 14:57:18

Название: Событие onMouseOut для таблицы
Отправлено: 4you от 09 Января 2006, 14:57:18
Подскажите пожалуйста возможное решение для след. ситуации.

Имею таблицу. Необходимо выполнить какую-нибудь функцию когда мышка "покидает" площадь таблицы. Пишу так:








TEST ONE
TEST ONE


К сожалению событие срабатывает тогда, когда перехожу от ячейки к ячейки. Необходимо чтоб срабатывало только тогда, когда полностью ушел с таблицы. Заранне благодарен
Название: Событие onMouseOut для таблицы
Отправлено: CGVictor от 09 Января 2006, 17:01:13
4you
- table onMouseOut (не tbody)
- засунуть талицу в div
Название: Событие onMouseOut для таблицы
Отправлено: 4you от 09 Января 2006, 17:03:01
CGVictor
К сожалению не помогает, пробовал... Причем и DIV-у назначал обработчик события и тоже ничего. Как только я перемещаюсь между ячейками полчую событие onMouseOut
Название: Событие onMouseOut для таблицы
Отправлено: noocky от 09 Января 2006, 18:32:54
Должно сработать. :)







TEST ONE
TEST ONE

Название: Событие onMouseOut для таблицы
Отправлено: 4you от 10 Января 2006, 09:59:32
noocky
Да, это намног получше.. Спасибо! Вот теперь осталось разобраться почему такая конструкция лучше.
Название: Событие onMouseOut для таблицы
Отправлено: noocky от 10 Января 2006, 21:20:11
4you

Ну, вероятно расстояние между ячейками браузер за часть таблицы не считает, поэтому при попадании курсора на это самое место между ячейками и происходит mouseout. Если поставить cellspacing=0 (т.е. расстояние м/у ячейками равно нулю), то mouseout все-равно происходит, но зато сразу после mouseout ячейки, с которой вышли, наступает mouseover ячейки на которую пришли. Следовательно, при переходе между ячейками для всей таблицы сначала происходит mouseout, а за ним сразу mouseover.

Что мы делаем:

Пускаем alert() или другую нужную функцию с задержкой, причем, пускаем ее при условии, что для таблицы не выполнился mouseover (то есть курсор вышел из таблицы). Проверка делается через переменную doTest.

Т.е. курсор вышел из ячейки – сработал mouseout (для таблицы), doTest приравнивается true, если курсор вошел на другую ячейку (не вышел из таблицы), то сработал mouseover (для таблицы), doTest приравнивается false, иначе doTest так и остается true. А далее через 10 миллисекунд выполняется Test(), которая при условии doTest == true выдает alert() или другую нужную функцию.