Счетчик обратного отсчета Javascript или JQuery?

Я пытаюсь создать простой счетчик, который считает в обратном порядке от 3 до 0 или от 5 до 0 или что-то еще.

Это таймер для вопросов, поэтому каждое число должно быть видно пользователю.

Я пытался:

for (i=3;i>=0;i--){

   $(".timerInner").delay(500).text( i );

}

Но не повезло.


person Splat ty    schedule 03.03.2012    source источник
comment
Во-первых, цикл выполняется очень быстро, поэтому все три оператора в теле цикла в основном выполняются одновременно. Во-вторых, text не является функцией анимации, поэтому первый вызов delay не имеет никакого эффекта. Я думаю, что есть миллион сценариев обратного отсчета для jQuery, которые вы можете использовать.   -  person Felix Kling    schedule 03.03.2012
comment
Выберите лучший ответ @Splatty   -  person 0x499602D2    schedule 04.03.2012


Ответы (5)


Попробуй это,

var i =5;

var timer = setInterval( calltimer, 500);

function calltimer(){
    $(".timerInner").append( i );

    if(i == 0){
       clearInterval(timer);
    }
    i--;

}
person Parag Gajjar    schedule 03.03.2012
comment
Спасибо, что в итоге я использовал этот код, но .append (i), который я переключил с помощью .text (i) append, похоже, не показал результатов. - person Splat ty; 04.03.2012

Используйте setInterval / _ 2_ вместо этого:

var i = 5;

var t = setInterval(function() {
    i === 0 && clearInterval(t);

    $(".timerInner").text(i);
    i--;
}, 1000);​
person 0x499602D2    schedule 03.03.2012

Я рекомендую использовать метод JavaScript setTimeout:

function countdown(remainingTime) {
    $('.timerInner').text(remainingTime);
    if (remainingTime > 0)
        setTimeout(function() { countdown(remainingTime - 100); }, 100);
}

​countdown(1000);​

Пример скрипта для игры: http://jsfiddle.net/MSa8h/1/

person Miroslav Bajtoš    schedule 03.03.2012

Вам нужно создать цикл на основе функции setTimeout, вот скетч

var i = 3;

var calc = function(){
    i--;
    if(i==0){
      //start new iteration
      timeout();
    }else{
      //end loop
      return;
    }

};

var timeout = function(){
    setTimeout(calc,1000);
};
person Liviu    schedule 03.03.2012
comment
Вы также можете опустить блок else. - person Felix Kling; 03.03.2012

var i =5;

var timer = setInterval( calltimer, 500);

function calltimer(){
   $(".timerInner").text( i );

 if(i == 0){
    clearInterval(timer);
 }
 i--;

}

Спасибо за помощь

person Splat ty    schedule 04.03.2012