function numRoll(n) { $.fn.countTo = function (options) { options = options || {}; return $(this).each(function () { var settings = $.extend({}, $.fn.countTo.defaults, {from: $(this).data('from'),to: $(this).data('to'),speed: $(this).data('speed'),refreshInterval: $(this).data('refresh-interval'),decimals: $(this).data('decimals')}, options); var loops = Math.ceil(settings.speed / settings.refreshInterval), increment = (settings.to - settings.from) / loops; var self = this,$self = $(this),loopCount = 0,value = settings.from,data = $self.data('countTo') || {}; $self.data('countTo', data); if (data.interval) {clearInterval(data.interval);} data.interval = setInterval(updateTimer, settings.refreshInterval); render(value); function updateTimer() { value += increment;loopCount++;render(value); if (typeof(settings.onUpdate) == 'function') {settings.onUpdate.call(self, value);} if (loopCount >= loops) {$self.removeData('countTo');clearInterval(data.interval);value = settings.to;if (typeof(settings.onComplete) == 'function') {settings.onComplete.call(self, value);}} } function render(value) {var formattedValue = settings.formatter.call(self, value, settings);$self.html(formattedValue);} }); }; $.fn.countTo.defaults = {from: 0,to: 0,speed: 3600,refreshInterval: 100, decimals: 0,formatter: formatter, onUpdate: null,onComplete: null}; function formatter(value, settings) {return value.toFixed(settings.decimals);} $(".number").eq(n).find(".timer").each(count); function count(options) {var $this = $(this);options = $.extend({}, options || {}, $this.data('countToOptions') || {});$this.countTo(options);} } var numFlag=[], numArr=[], loopArr=[]; if($('.number').length>0){ $(".number").each(function(){speed = $(this).attr("speed") || 3600;loop = $(this).attr("loop") || false;$(this).find(".timer").each(function(){$(this).attr({'data-speed': speed,'data-to': $(this).text()});});loopArr.push(loop);}); setTimeout(function(){$('.number').each(function(){numArr.push($(this).offset().top - window.innerHeight);numFlag.push(1);})},666) } $(window).scroll(function () { var scrollRun = $(window).scrollTop(); for (var i = 0; i < numArr.length; i++) {if (scrollRun >= numArr[i] && numFlag[i]){numFlag[i] = 0;numRoll(i);}if(loopArr[i]){if (scrollRun < numArr[i]){numFlag[i] = 1;}}} });