Я попытался создать счетчик jquery
$.fn.counter = function (num) {
var self = $(this);
for (var i = 1; i <= num; ++i) {
setInterval(function () {
self.html(i);
}, 4000);
}
};
$('div').counter(100);
После загрузки страницы мне нужно увеличить значения в блоке до определенного значения, а затем остановить счетчик. Почему мой код не работает?
Проблема заключается в неправильном использовании переменной закрытия и 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);
Используйте это,
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);
}
Выполняется ваш 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);