#javascript
#javascript
Вопрос:
Чтобы установить задержку в меню при наведении курсора мыши, setTimeout является одним из вариантов. Но когда я пытаюсь это сделать, функция не вызывается.
HTML:
<li><a href="#"
onmouseover="mopendelay('menu_proj')"
<li>
JavaScript:
// open hidden layer
function mopen(id)
{
// cancel close timer
mcancelclosetime();
// close old layer
if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
// get new layer and show it
ddmenuitem = document.getElementById(id);
ddmenuitem.style.visibility = 'visible';
}
// delay menu open on mouseover
function mopendelay(id)
{
var delay = setTimeout(function(){
alert('delay'); // isn't called
mopen(id);
}, 200);
clearTimeout(delay);
}
Ответ №1:
Вы сбрасываете тайм-аут, прежде чем функция тайм-аута сможет выполняться.
function mopendelay(id)
{
var delay = setTimeout(function(){
mopen(id);
}, 200);
}
Комментарии:
1. ОК. Спасибо за все ответы. Если я уберу время ожидания, оно сработает. Я также должен удалить инструкцию debug alert, чтобы получить правильный ответ.
Ответ №2:
Вы немедленно вызываете clearTimeout
дескриптор, возвращаемый setTimeout
. Почему это так? Я считаю, что код будет работать должным образом, если вы удалите это.
Ответ №3:
Вы вызываете clearTimeout
сразу после этого. Для чего? Удалите эту строку, и она будет работать правильно.
Ответ №4:
Ваш чистый тайм-аут должен находиться за пределами функции, переданной в setTimeout