Счетчик Jquery не работает

0

Я попытался создать счетчик jquery

$.fn.counter = function (num) {
var self = $(this);
for (var i = 1; i <= num; ++i) {
    setInterval(function () {
        self.html(i);
    }, 4000);
}
};

$('div').counter(100);

http://jsfiddle.net/Rdy5B/14/

После загрузки страницы мне нужно увеличить значения в блоке до определенного значения, а затем остановить счетчик. Почему мой код не работает?

Теги:

3 ответа

2
Лучший ответ

Проблема заключается в неправильном использовании переменной закрытия и setInterval()

$.fn.counter = function (num) {
    var i = 1,
        self = $(this).html(i);
    var interval = setInterval(function () {
        self.html(++i);
        if (i >= num) {
            clearInterval(interval)
        }
    }, 1000);
};

$('div').counter(3);
2

Используйте это,

var i=0;
setInterval(function () {
        i++;
    $("div").html(i);
    }, 4000);

Вам не нужно использовать цикл для увеличения счетчика. Поскольку setInterval вызывает многократно, вы можете поместить туда логику для увеличения.

демонстрация

редактировать

var myVar = setInterval(function(){myTimer()},1000);
var i=0;
var num=4;
function myTimer()
{
    i++;
    $("div").html(i);
    if(i==num)
    {
        myStopFunction();
    }
}

function myStopFunction()
{
clearInterval(myVar);
}

Обновленная демоверсия

  • 0
    Мне нужно остановить счетчик после того, как я === Num.
1

Выполняется ваш for и один setInterval будет запущен (потому что он ждет 4 секунды).

Вы можете указать ваш и увеличить i внутри интервала, например:

$.fn.counter = function (num) {
    var self = $(this);
    var i=0;
    var int = setInterval(function () {        
        if (i > num) {
            clearInterval(int)
            return
        }
        i++;
        self.html(i);
    }, 4000);

};

$('div').counter(100);

Демо: http://jsfiddle.net/5MjfT/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню