как да забавя изпълнението на този javascript

Дискусията в 'Webmaster Help - Секцията на Експертите' стартирана от viper1, Авг 10, 2018 в 2:28 PM.

  1. viper1

    viper1 Member

    Рег.:
    Май 14, 2013
    Съобщения:
    46
    Харесвания:
    0
    Точки:
    6
    имам javascript код , който всъщност е анимиран брояч. Интересува ме как може да забавя самото изпълнение на скрипта с 30 секунди.


    (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);
    }
    });
     
  2. AMitrev

    AMitrev Well-Known Member

    Рег.:
    Авг 6, 2012
    Съобщения:
    1,557
    Харесвания:
    244
    Точки:
    63
    Пол:
    Мъж
    Място:
    София
  3. viper1

    viper1 Member

    Рег.:
    Май 14, 2013
    Съобщения:
    46
    Харесвания:
    0
    Точки:
    6
    по скоро с учене ама сега не е момента ако някой го може...може
     
  4. AMitrev

    AMitrev Well-Known Member

    Рег.:
    Авг 6, 2012
    Съобщения:
    1,557
    Харесвания:
    244
    Точки:
    63
    Пол:
    Мъж
    Място:
    София
    Ако беше прочел това което съм ти дал като линк вече щеше да си си решил проблема.
     
  5. rscossworth

    rscossworth Active Member

    Рег.:
    Авг 18, 2010
    Съобщения:
    449
    Харесвания:
    87
    Точки:
    28
    Блъскаш целия код в една функция и я викаш със setTimeout()
     
  6. viper1

    viper1 Member

    Рег.:
    Май 14, 2013
    Съобщения:
    46
    Харесвания:
    0
    Точки:
    6
    това което си дал като линк го четох докато рових в гугъл още преди да го пейстна тук и не можах да го направя. ясно ми е че целия код трябва да загради със setTimeout() но не ми се получи да проработи нещо с javata ме няма никак
     
  7. Sky

    Sky Well-Known Member

    Рег.:
    Юли 29, 2012
    Съобщения:
    8,824
    Харесвания:
    648
    Точки:
    113
    Пол:
    Мъж
    Място:
    Стара Загора
    Ползвай jsfiddle.net, така не се чете.
    Смени
    HTML:
     $('.timer').each(count);  
    със
    HTML:
    setTimeout(function(){ $('.timer').each(count); }, 30000);
     
    ReminD харесва това.
  8. viper1

    viper1 Member

    Рег.:
    Май 14, 2013
    Съобщения:
    46
    Харесвания:
    0
    Точки:
    6
    ее браво sky ! и друг път си помагал
     

Сподели страницата

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice