Как показать последние 5 секунд, когда время истекает? - PullRequest
2 голосов
/ 10 августа 2011

Привет! Я использую тайм-аут Javascript для запуска определенной функции.

Как отобразить последние 10 секунд тайм-аута, когда он приближается к концу?

var a = setTimeout('someFunction()', 10000);

Может ли оно отображать что-либо, используя значение, которое оно хранит в переменной?

Спасибо

Ответы [ 5 ]

4 голосов
/ 10 августа 2011

Я создал для вас небольшое демо,

http://jsfiddle.net/praveen_prasad/DYaan/1/

<div id="target" style="display:none">
    target
</div>


var target,
    allotedTimeForWork=100   /*you can change this*/
    ;
var handler = setTimeout(function(){
      if(!target)
      {
          target=document.getElementById('target');
      }
    target.style.display="block";
    startTicker();
}, allotedTimeForWork);

function startTicker()
{
    var counter=10;
    var tickerHandler= window.setInterval(function(){
          if(counter>0)
          {
              //cache target
              target.innerHTML="you have "+counter +" seconds left";
              counter--;
          }
        else
        {
            target.innerHTML="time over";
            clearInterval(tickerHandler);
        }
    },1000);          
}
2 голосов
/ 10 августа 2011

Невозможно напрямую получить оставшееся время тайм-аута. Вы можете попытаться создать несколько тайм-аутов для каждой секунды или использовать другую переменную, которую вы сохраняете при запуске тайм-аута.

1 голос
/ 10 августа 2011

установить 2 таймера, один для таймаута и другой для предупреждения

var warn_time = 5000;
var function_name = 'someFunction()';

var a = setTimeout('warnFunction(function_name, warn_time)', 10000 - warn_time);

function warnFunction(function_name, time) {
  alert('only ' + time + ' seconds left');   //use a div or whatever to display
  var b = setTimeout(function_name, time);
}
1 голос
/ 10 августа 2011

Посмотрите здесь: http://jsfiddle.net/VCAnm/

HTML:

<span id="aaa">10</span>

JavaScript:

setInterval(function() {
    var elem = document.getElementById('aaa');
    elem.innerHTML = elem.innerHTML - 1;
}, 1000);
1 голос
/ 10 августа 2011

Я бы использовал два тайм-аута.

Первый со временем минус 5 секунд, который вызывает функцию со вторым тайм-аутом (5 секунд), при котором отображается таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...