如何在特定部分开始计数器在一个部分有一个id

时间:2017-08-14 21:29:50

标签: javascript jquery

我已经使用该代码制作了一个计数器

(function ($) {
$.fn.countTo = function (options) {
    options = options || {};

    return $(this).each(function () {
        // set options for current element
        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);

        // how many times to update the value, and how much to increment the value on each update
        var loops = Math.ceil(settings.speed / settings.refreshInterval),
            increment = (settings.to - settings.from) / loops;

        // references & variables that will change with each update
        var self = this,
            $self = $(this),
            loopCount = 0,
            value = settings.from,
            data = $self.data('countTo') || {};

        $self.data('countTo', data);

        // if an existing interval can be found, clear it first
        if (data.interval) {
            clearInterval(data.interval);
        }
        data.interval = setInterval(updateTimer, settings.refreshInterval);

        // initialize the element with the starting value
        render(value);

        function updateTimer() {
            value += increment;
            loopCount++;

            render(value);

            if (typeof(settings.onUpdate) == 'function') {
                settings.onUpdate.call(self, value);
            }

            if (loopCount >= loops) {
                // remove the interval
                $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,               // the number the element should start at
    to: 0,                 // the number the element should end at
    speed: 1000,           // how long it should take to count between the target numbers
    refreshInterval: 100,  // how often the element should be updated
    decimals: 0,           // the number of decimal places to show
    formatter: formatter,  // handler for formatting the value before rendering
    onUpdate: null,        // callback method for every time the element is updated
    onComplete: null       // callback method for when the element finishes updating
};

function formatter(value, settings) {
    return value.toFixed(settings.decimals);
}
}(jQuery));

jQuery(function ($) {
 // custom formatting example
 $('#count-number').data('countToOptions', {
formatter: function (value, options) {
  return value.toFixed(options.decimals).replace(/\B(?=(?:\d{3})+(?!\d))/g, 
',');
 }
 });

 // start all the timers
 $('.timer').each(count);  

   function count(options) {
   var $this = $(this);
   options = $.extend({}, options || {}, $this.data('countToOptions') || 
    {});
    $this.countTo(options);
     }
    });

问题是,当网站打开时,计数器开始计数。但是我想在滚动到其部分的部分时使计数器开始。 P.S 该部分有一个id,并且在点击它时有一个与该id的href链接 它滚动到那个部分

<h3>
  <a href="#counts" class="page-scroll">Be Part Of Our Story</a>
</h3>
<div class="col-md-4  col-xs-12" >
    <div class="counts text-center">
      <i class="fa fa-cogs fa-4x" aria-hidden="true"></i>
      <h3 class="">WorkShops</h3>
      <p>
        <h1 class="timer count-title sr-icons" id="count-number"          
         data to="300" data-speed="1500"></h1>
      </p>
    </div>
    </div> 

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案