Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   setTimeout время при очередном вызове функции (https://javascript.ru/forum/dom-window/33756-settimeout-vremya-pri-ocherednom-vyzove-funkcii.html)

ShutTap 06.12.2012 23:56

setTimeout время при очередном вызове функции
 
Здравствуйте.
Есть функция, которая показывает див при клике мышкой, и таймер, который этот див убирает через некоторое время (что-то вроде всплывающей подсказки).
Если кликнуть несколько раз, недождавшись исчезания дива по таймеру, то время исчезания после последнего клика меньше времени у таймера (исчезает как бы все равно после первого клика).
Как можно сделать исчезание дива по времени именно после последнего клика?

{
if (t) clearTimeout(t);

mydiv.style.display='block';

var t=setTimeout(function() { mydiv.style.display='none'; }, 3000);
}

walik 07.12.2012 00:05

Проблема скорее всего в том что переменная t должна быть объявлена вне-функции

ShutTap 07.12.2012 00:10

А как ее тогда вызывать в функции?

walik 07.12.2012 00:14

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <div style="width: 200px;height: 100px;background: red;display: none;" id="mydiv"></div>
    
    <button onclick="clk();">Click me</button>
    
    <script>
	  var t, mydiv = document.getElementById('mydiv');
      function clk() {
      	clearTimeout(t);
        mydiv.style.display='block';
		t = setTimeout(function() { mydiv.style.display='none'; }, 3000);
      }
    </script>
  </body>
</html>

ShutTap 07.12.2012 00:17

Ааа)) ну я ступил... :D
Спасибо огромное)


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