Как добавить текст к блоку "counter" jQuery

Discussion in 'PHP' started by nikkicn, 13 Feb 2017.

  1. nikkicn

    nikkicn New Member

    Joined:
    13 Feb 2017
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Всем привет, подскажите пожалуйста как в счетчике добавить текст в блок, рядом с текстом?
    Нужен следующий результат:
    "11"
    "12"
    "13 $"
    "14 m2"
    в
    $self.text(formattedValue);
    я могу дописать значение +"text", но значение применяется ко всем блокам.
    ВОПРОС:
    Как можно передать несколько значений? Чтобы добавить "разный" текст только к 3-му и 4-му блоку ?

    HTML

    <div id="counter" class="parallaxbg">
    <div class="counter-section">
    <div class="pattern-overlay"></div>
    <div class="container">
    <div class="row">
    <div class="col-sm-3 animated" data-animation="fadeInUp" data-animation-delay="300">
    <i class="fa fa-handshake-o"></i>
    <div class="count-number fun-number" data-count="11">
    <div class="counter"></div>
    </div>
    <p>Постоянных клиентов</p>
    </div>
    <div class="col-sm-3 animated" data-animation="fadeInUp" data-animation-delay="500">
    <i class="fa fa-users"></i>
    <div class="count-number fun-number" data-count="12">
    <div class="counter"></div>
    </div>
    <p>Сотрудников в компании</p>
    </div>
    <div class="col-sm-3 animated" data-animation="fadeInUp" data-animation-delay="700">
    <i class="fa fa-pie-chart"></i>
    <div class="count-number fun-number" data-count="13">
    <div class="counter"></div>
    </div>
    <p>Оборот за 2016 год</p>
    </div>
    <div class="col-sm-3 animated" data-animation="fadeInUp" data-animation-delay="1100">
    <i class="fa fa-home"></i>
    <div class="count-number fun-number" data-count="14">
    <div class="counter"></div>
    </div>
    <p>Складских помещений</p>
    </div>
    </div>
    </div>
    </div>
    </div>



    JsQuery


    (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.text(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));
     

    Attached Files:

    Strilo4ka likes this.
  2. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    729
    Reputations:
    948
    HTML:
    ...
          function render(value) {
             var formattedValue = settings.formatter.call(self, value, settings);
             if ($self.parent().find('.fa-pie-chart').length) {
               formattedValue += '$';
             }
             if ($self.parent().find('.fa-home').length) {
               formattedValue += 'm2';
             }
             $self.html(formattedValue);
           }
    ...
     
    nikkicn likes this.
  3. nikkicn

    nikkicn New Member

    Joined:
    13 Feb 2017
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Я так понимаю, что индексация идет через иконки, то есть если я заменю иконку, нужно будет прописать в значении другой код.
    Заменил function render(value) перестало отображатся=(
    Можете пожалуйста полный код сбросить? Возможно я не там меняю...
    Заранее спасибо большое.
     
  4. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    729
    Reputations:
    948
    https://www.sendspace.com/file/s7rdcj на веб-сервере запускайте, а не с бравзера в тупую.
     
    nikkicn likes this.