Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > > Скрытие меню через 3 с


Автор: champion 3.9.2008, 10:42
Приветствую!
Подскажите пожалуйста, как сделать автоматическое скрытие слоя, в случае отсутствия перемещения мыши по нему в течение 3сек.


Автор: Alpha 3.9.2008, 12:30
Можно воспользоваться методом setTimeout
Про него можно почитать тут:
http://www.fpublisher.ru/documentation/dhtml_doc/dhtml13.docs#hsettimeout

Как можно сделать:
На onMouseOver повесить метод, который будет убивать предыдущий таймаут, и создавать новый. По таймауту будем убирать слой.
При движении мышкой убъется предыдущий таймаут, если он еще не сработал, без срабатывания функции, которая убирает слой, и создастся новый таймаут.

window.clearTimeout(h); - убиваем таймаут;
window.setTimeout('hide()', 3000) - создает новый


Пример рабочего скрипта:

Код


<script>

    var h = false;
    
    function hide(){
        document.getElementById('dv').style.display='none';
    }
    
    function chkMovement(){
        if (h!=false){
            window.clearTimeout(h);
        }
        h = window.setTimeout('hide()', 3000);
    }

</script>

<div id="dv" style='padding:10px; border:1px solid black' onMouseMove="chkMovement()">
    Этот див уберется<br>
    если не будет движений<br>
    3 секунды
</div>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)