Показать сообщение отдельно
  #11 (permalink)  
Старый 15.08.2009, 19:27
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от theo_
timerID = setTimeout(hide(menu), 500);
в setTimeout передаётся либо функция (без вызова), либо строка, содержащая код:

- setTimeout(hide, 500);
- setTimeout('hide()', 500);


Первый вариант предпочтительней. Однако, если нужно передать аргумент, то можно использовать так:

setTimeout(function () {
  hide(menu);
}, 500);


Сообщение от theo_
menu.onmouseover = "cancel_hide()";
menu.onmouseout = "hide()";
Аналогично присвоение событиям - должна быть функция, не строка (и не вызов):

menu.onmouseover = cancel_hide;
menu.onmouseout = hide;


Сообщение от theo_
однако оно может убраться и в момент, когда указатель мыши находится над ссылкой
В данном случае, можно ввести переменную-флаг. Если флаг == true, не выполняйте действие; по onmouseout'у можно сбросить флаг и запустить функцию скрытия по тайм-ауту. Хотя, не понятно, зачем запускать функцию скрытия, когда указатель над меню? Запускайте по mouseout'у.

Сообщение от theo_
не получается menu сделать глобальной переменной
объявите вне функций
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 15.08.2009 в 19:32.
Ответить с цитированием