javascript - 里程表计数器值

标签 javascript jquery css scripting odometer

我正在尝试在里程表中显示值,如 0123,但不工作 0 不显示在输出中,这里是代码。

如何在开始时显示 0???请帮助我...

查看我附加的 js 和 html 代码机器人。我正在尝试改变它但没有醒来....

我该怎么做?我如何在里程表计数器的任意位置添加 0。

(function() {
  var COUNT_FRAMERATE, COUNT_MS_PER_FRAME, DIGIT_FORMAT, DIGIT_HTML, DIGIT_SPEEDBOOST, DURATION, FORMAT_MARK_HTML, FORMAT_PARSER, FRAMERATE, FRAMES_PER_VALUE, MS_PER_FRAME, MutationObserver, Odometer, RIBBON_HTML, TRANSITION_END_EVENTS, TRANSITION_SUPPORT, VALUE_HTML, addClass, createFromHTML, fractionalPart, now, removeClass, requestAnimationFrame, round, transitionCheckStyles, trigger, truncate, wrapJQuery, _jQueryWrapped, _old, _ref, _ref1,
    __slice = [].slice;

  VALUE_HTML = '<span class="odometer-value"></span>';

  RIBBON_HTML = '<span class="odometer-ribbon"><span class="odometer-ribbon-inner">' + VALUE_HTML + '</span></span>';

  DIGIT_HTML = '<span class="odometer-digit"><span class="odometer-digit-spacer">8</span><span class="odometer-digit-inner">' + RIBBON_HTML + '</span></span>';

  FORMAT_MARK_HTML = '<span class="odometer-formatting-mark"></span>';

  DIGIT_FORMAT = '(ddd).dd';

  FORMAT_PARSER = /^\(?([^)]*)\)?(?:(.)(d+))?$/;

  FRAMERATE = 30;

  DURATION = 3000;

  COUNT_FRAMERATE = 20;

  FRAMES_PER_VALUE = 2;

  DIGIT_SPEEDBOOST = .5;

  MS_PER_FRAME = 1000 / FRAMERATE;

  COUNT_MS_PER_FRAME = 1000 / COUNT_FRAMERATE;

  TRANSITION_END_EVENTS = 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd';

  transitionCheckStyles = document.createElement('div').style;

  TRANSITION_SUPPORT = (transitionCheckStyles.transition != null) || (transitionCheckStyles.webkitTransition != null) || (transitionCheckStyles.mozTransition != null) || (transitionCheckStyles.oTransition != null);

  requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;

  MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

  createFromHTML = function(html) {
    var el;
    el = document.createElement('div');
    el.innerHTML = html;
    return el.children[0];
  };

  removeClass = function(el, name) {
    return el.className = el.className.replace(new RegExp("(^| )" + (name.split(' ').join('|')) + "( |$)", 'gi'), ' ');
  };

  addClass = function(el, name) {
    removeClass(el, name);
    return el.className += " " + name;
  };

  trigger = function(el, name) {
    var evt;
    if (document.createEvent != null) {
      evt = document.createEvent('HTMLEvents');
      evt.initEvent(name, true, true);
      return el.dispatchEvent(evt);
    }
  };

  now = function() {
    var _ref, _ref1;
    return (_ref = (_ref1 = window.performance) != null ? typeof _ref1.now === "function" ? _ref1.now() : void 0 : void 0) != null ? _ref : +(new Date);
  };

  round = function(val, precision) {
    if (precision == null) {
      precision = 0;
    }
    if (!precision) {
      return Math.round(val);
    }
    val *= Math.pow(10, precision);
    val += 0.5;
    val = Math.floor(val);
    return val /= Math.pow(10, precision);
  };

  truncate = function(val) {
    if (val < 0) {
      return Math.ceil(val);
    } else {
      return Math.floor(val);
    }
  };

  fractionalPart = function(val) {
    return val - round(val);
  };

  _jQueryWrapped = false;

  (wrapJQuery = function() {
    var property, _i, _len, _ref, _results;
    if (_jQueryWrapped) {
      return;
    }
    if (window.jQuery != null) {
      _jQueryWrapped = true;
      _ref = ['html', 'text'];
      _results = [];
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        property = _ref[_i];
        _results.push((function(property) {
          var old;
          old = window.jQuery.fn[property];
          return window.jQuery.fn[property] = function(val) {
            var _ref1;
            if ((val == null) || (((_ref1 = this[0]) != null ? _ref1.odometer : void 0) == null)) {
              return old.apply(this, arguments);
            }
            return this[0].odometer.update(val);
          };
        })(property));
      }
      return _results;
    }
  })();

  setTimeout(wrapJQuery, 0);

  Odometer = (function() {
    function Odometer(options) {
      var e, k, property, v, _base, _i, _len, _ref, _ref1, _ref2,
        _this = this;
      this.options = options;
      this.el = this.options.el;
      if (this.el.odometer != null) {
        return this.el.odometer;
      }
      this.el.odometer = this;
      _ref = Odometer.options;
      for (k in _ref) {
        v = _ref[k];
        if (this.options[k] == null) {
          this.options[k] = v;
        }
      }
      if ((_base = this.options).duration == null) {
        _base.duration = DURATION;
      }
      this.MAX_VALUES = ((this.options.duration / MS_PER_FRAME) / FRAMES_PER_VALUE) | 0;
      this.resetFormat();
      this.value = this.cleanValue((_ref1 = this.options.value) != null ? _ref1 : '');
      this.renderInside();
      this.render();
      try {
        _ref2 = ['innerHTML', 'innerText', 'textContent'];
        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
          property = _ref2[_i];
          if (this.el[property] != null) {
            (function(property) {
              return Object.defineProperty(_this.el, property, {
                get: function() {
                  var _ref3;
                  if (property === 'innerHTML') {
                    return _this.inside.outerHTML;
                  } else {
                    return (_ref3 = _this.inside.innerText) != null ? _ref3 : _this.inside.textContent;
                  }
                },
                set: function(val) {
                  return _this.update(val);
                }
              });
            })(property);
          }
        }
      } catch (_error) {
        e = _error;
        this.watchForMutations();
      }
      this;
    }

    Odometer.prototype.renderInside = function() {
      this.inside = document.createElement('div');
      this.inside.className = 'odometer-inside';
      this.el.innerHTML = '';
      return this.el.appendChild(this.inside);
    };

    Odometer.prototype.watchForMutations = function() {
      var e,
        _this = this;
      if (MutationObserver == null) {
        return;
      }
      try {
        if (this.observer == null) {
          this.observer = new MutationObserver(function(mutations) {
            var newVal;
            newVal = _this.el.innerText;
            _this.renderInside();
            _this.render(_this.value);
            return _this.update(newVal);
          });
        }
        this.watchMutations = true;
        return this.startWatchingMutations();
      } catch (_error) {
        e = _error;
      }
    };

    Odometer.prototype.startWatchingMutations = function() {
      if (this.watchMutations) {
        return this.observer.observe(this.el, {
          childList: true
        });
      }
    };

    Odometer.prototype.stopWatchingMutations = function() {
      var _ref;
      return (_ref = this.observer) != null ? _ref.disconnect() : void 0;
    };

    Odometer.prototype.cleanValue = function(val) {
      var _ref;
      if (typeof val === 'string') {
        val = val.replace((_ref = this.format.radix) != null ? _ref : '.', '<radix>');
        val = val.replace(/[.,]/g, '');
        val = val.replace('<radix>', '.');
        val = parseFloat(val, 10) || 0;
      }
      return round(val, this.format.precision);
    };

    Odometer.prototype.bindTransitionEnd = function() {
      var event, renderEnqueued, _i, _len, _ref, _results,
        _this = this;
      if (this.transitionEndBound) {
        return;
      }
      this.transitionEndBound = true;
      renderEnqueued = false;
      _ref = TRANSITION_END_EVENTS.split(' ');
      _results = [];
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        event = _ref[_i];
        _results.push(this.el.addEventListener(event, function() {
          if (renderEnqueued) {
            return true;
          }
          renderEnqueued = true;
          setTimeout(function() {
            _this.render();
            renderEnqueued = false;
            return trigger(_this.el, 'odometerdone');
          }, 0);
          return true;
        }, false));
      }
      return _results;
    };

    Odometer.prototype.resetFormat = function() {
      var format, fractional, parsed, precision, radix, repeating, _ref, _ref1;
      format = (_ref = this.options.format) != null ? _ref : DIGIT_FORMAT;
      format || (format = 'd');
      parsed = FORMAT_PARSER.exec(format);
      if (!parsed) {
        throw new Error("Odometer: Unparsable digit format");
      }
      _ref1 = parsed.slice(1, 4), repeating = _ref1[0], radix = _ref1[1], fractional = _ref1[2];
      precision = (fractional != null ? fractional.length : void 0) || 0;
      return this.format = {
        repeating: repeating,
        radix: radix,
        precision: precision
      };
    };

    Odometer.prototype.render = function(value) {
      var classes, cls, match, newClasses, theme, _i, _len;
      if (value == null) {
        value = this.value;
      }
      this.stopWatchingMutations();
      this.resetFormat();
      this.inside.innerHTML = '';
      theme = this.options.theme;
      classes = this.el.className.split(' ');
      newClasses = [];
      for (_i = 0, _len = classes.length; _i < _len; _i++) {
        cls = classes[_i];
        if (!cls.length) {
          continue;
        }
        if (match = /^odometer-theme-(.+)$/.exec(cls)) {
          theme = match[1];
          continue;
        }
        if (/^odometer(-|$)/.test(cls)) {
          continue;
        }
        newClasses.push(cls);
      }
      newClasses.push('odometer');
      if (!TRANSITION_SUPPORT) {
        newClasses.push('odometer-no-transitions');
      }
      if (theme) {
        newClasses.push("odometer-theme-" + theme);
      } else {
        newClasses.push("odometer-auto-theme");
      }
      this.el.className = newClasses.join(' ');
      this.ribbons = {};
      this.formatDigits(value);
      return this.startWatchingMutations();
    };

    Odometer.prototype.formatDigits = function(value) {
      var digit, valueDigit, valueString, wholePart, _i, _j, _len, _len1, _ref, _ref1;
      this.digits = [];
      if (this.options.formatFunction) {
        valueString = this.options.formatFunction(value);
        _ref = valueString.split('').reverse();
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
          valueDigit = _ref[_i];
          if (valueDigit.match(/0-9/)) {
            digit = this.renderDigit();
            digit.querySelector('.odometer-value').innerHTML = valueDigit;
            this.digits.push(digit);
            this.insertDigit(digit);
          } else {
            this.addSpacer(valueDigit);
          }
        }
      } else {
        wholePart = !this.format.precision || !fractionalPart(value) || false;
        _ref1 = value.toString().split('').reverse();
        for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
          digit = _ref1[_j];
          if (digit === '.') {
            wholePart = true;
          }
          this.addDigit(digit, wholePart);
        }
      }
    };

    Odometer.prototype.update = function(newValue) {
      var diff,
        _this = this;
      newValue = this.cleanValue(newValue);
      if (!(diff = newValue - this.value)) {
        return;
      }
      removeClass(this.el, 'odometer-animating-up odometer-animating-down odometer-animating');
      if (diff > 0) {
        addClass(this.el, 'odometer-animating-up');
      } else {
        addClass(this.el, 'odometer-animating-down');
      }
      this.stopWatchingMutations();
      this.animate(newValue);
      this.startWatchingMutations();
      setTimeout(function() {
        _this.el.offsetHeight;
        return addClass(_this.el, 'odometer-animating');
      }, 0);
      return this.value = newValue;
    };

    Odometer.prototype.renderDigit = function() {
      return createFromHTML(DIGIT_HTML);
    };

    Odometer.prototype.insertDigit = function(digit, before) {
      if (before != null) {
        return this.inside.insertBefore(digit, before);
      } else if (!this.inside.children.length) {
        return this.inside.appendChild(digit);
      } else {
        return this.inside.insertBefore(digit, this.inside.children[0]);
      }
    };

    Odometer.prototype.addSpacer = function(chr, before, extraClasses) {
      var spacer;
      spacer = createFromHTML(FORMAT_MARK_HTML);
      spacer.innerHTML = chr;
      if (extraClasses) {
        addClass(spacer, extraClasses);
      }
      return this.insertDigit(spacer, before);
    };

    Odometer.prototype.addDigit = function(value, repeating) {
      var chr, digit, resetted, _ref;
      if (repeating == null) {
        repeating = true;
      }
      if (value === '-') {
        return this.addSpacer(value, null, 'odometer-negation-mark');
      }
      if (value === '.') {
        return this.addSpacer((_ref = this.format.radix) != null ? _ref : '.', null, 'odometer-radix-mark');
      }
      if (repeating) {
        resetted = false;
        while (true) {
          if (!this.format.repeating.length) {
            if (resetted) {
              throw new Error("Bad odometer format without digits");
            }
            this.resetFormat();
            resetted = true;
          }
          chr = this.format.repeating[this.format.repeating.length - 1];
          this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1);
          if (chr === 'd') {
            break;
          }
          this.addSpacer(chr);
        }
      }
      digit = this.renderDigit();
      digit.querySelector('.odometer-value').innerHTML = value;
      this.digits.push(digit);
      return this.insertDigit(digit);
    };

    Odometer.prototype.animate = function(newValue) {
      if (!TRANSITION_SUPPORT || this.options.animation === 'count') {
        return this.animateCount(newValue);
      } else {
        return this.animateSlide(newValue);
      }
    };

    Odometer.prototype.animateCount = function(newValue) {
      var cur, diff, last, start, tick,
        _this = this;
      if (!(diff = +newValue - this.value)) {
        return;
      }
      start = last = now();
      cur = this.value;
      return (tick = function() {
        var delta, dist, fraction;
        if ((now() - start) > _this.options.duration) {
          _this.value = newValue;
          _this.render();
          trigger(_this.el, 'odometerdone');
          return;
        }
        delta = now() - last;
        if (delta > COUNT_MS_PER_FRAME) {
          last = now();
          fraction = delta / _this.options.duration;
          dist = diff * fraction;
          cur += dist;
          _this.render(Math.round(cur));
        }
        if (requestAnimationFrame != null) {
          return requestAnimationFrame(tick);
        } else {
          return setTimeout(tick, COUNT_MS_PER_FRAME);
        }
      })();
    };

    Odometer.prototype.getDigitCount = function() {
      var i, max, value, values, _i, _len;
      values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
      for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
        value = values[i];
        values[i] = Math.abs(value);
      }
      max = Math.max.apply(Math, values);
      return Math.ceil(Math.log(max + 1) / Math.log(10));
    };

    Odometer.prototype.getFractionalDigitCount = function() {
      var i, parser, parts, value, values, _i, _len;
      values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
      parser = /^\-?\d*\.(\d*?)0*$/;
      for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
        value = values[i];
        values[i] = value.toString();
        parts = parser.exec(values[i]);
        if (parts == null) {
          values[i] = 0;
        } else {
          values[i] = parts[1].length;
        }
      }
      return Math.max.apply(Math, values);
    };

    Odometer.prototype.resetDigits = function() {
      this.digits = [];
      this.ribbons = [];
      this.inside.innerHTML = '';
      return this.resetFormat();
    };

    Odometer.prototype.animateSlide = function(newValue) {
      var boosted, cur, diff, digitCount, digits, dist, end, fractionalCount, frame, frames, i, incr, j, mark, numEl, oldValue, start, _base, _i, _j, _k, _l, _len, _len1, _len2, _m, _ref, _results;
      oldValue = this.value;
      fractionalCount = this.getFractionalDigitCount(oldValue, newValue);
      if (fractionalCount) {
        newValue = newValue * Math.pow(10, fractionalCount);
        oldValue = oldValue * Math.pow(10, fractionalCount);
      }
      if (!(diff = newValue - oldValue)) {
        return;
      }
      this.bindTransitionEnd();
      digitCount = this.getDigitCount(oldValue, newValue);
      digits = [];
      boosted = 0;
      for (i = _i = 0; 0 <= digitCount ? _i < digitCount : _i > digitCount; i = 0 <= digitCount ? ++_i : --_i) {
        start = truncate(oldValue / Math.pow(10, digitCount - i - 1));
        end = truncate(newValue / Math.pow(10, digitCount - i - 1));
        dist = end - start;
        if (Math.abs(dist) > this.MAX_VALUES) {
          frames = [];
          incr = dist / (this.MAX_VALUES + this.MAX_VALUES * boosted * DIGIT_SPEEDBOOST);
          cur = start;
          while ((dist > 0 && cur < end) || (dist < 0 && cur > end)) {
            frames.push(Math.round(cur));
            cur += incr;
          }
          if (frames[frames.length - 1] !== end) {
            frames.push(end);
          }
          boosted++;
        } else {
          frames = (function() {
            _results = [];
            for (var _j = start; start <= end ? _j <= end : _j >= end; start <= end ? _j++ : _j--){ _results.push(_j); }
            return _results;
          }).apply(this);
        }
        for (i = _k = 0, _len = frames.length; _k < _len; i = ++_k) {
          frame = frames[i];
          frames[i] = Math.abs(frame % 10);
        }
        digits.push(frames);
      }
      this.resetDigits();
      _ref = digits.reverse();
      for (i = _l = 0, _len1 = _ref.length; _l < _len1; i = ++_l) {
        frames = _ref[i];
        if (!this.digits[i]) {
          this.addDigit(' ', i >= fractionalCount);
        }
        if ((_base = this.ribbons)[i] == null) {
          _base[i] = this.digits[i].querySelector('.odometer-ribbon-inner');
        }
        this.ribbons[i].innerHTML = '';
        if (diff < 0) {
          frames = frames.reverse();
        }
        for (j = _m = 0, _len2 = frames.length; _m < _len2; j = ++_m) {
          frame = frames[j];
          numEl = document.createElement('div');
          numEl.className = 'odometer-value';
          numEl.innerHTML = frame;
          this.ribbons[i].appendChild(numEl);
          if (j === frames.length - 1) {
            addClass(numEl, 'odometer-last-value');
          }
          if (j === 0) {
            addClass(numEl, 'odometer-first-value');
          }
        }
      }
      if (start < 0) {
        this.addDigit('-');
      }
      mark = this.inside.querySelector('.odometer-radix-mark');
      if (mark != null) {
        mark.parent.removeChild(mark);
      }
      if (fractionalCount) {
        return this.addSpacer(this.format.radix, this.digits[fractionalCount - 1], 'odometer-radix-mark');
      }
    };

    return Odometer;

  })();

  Odometer.options = (_ref = window.odometerOptions) != null ? _ref : {};

  setTimeout(function() {
    var k, v, _base, _ref1, _results;
    if (window.odometerOptions) {
      _ref1 = window.odometerOptions;
      _results = [];
      for (k in _ref1) {
        v = _ref1[k];
        _results.push((_base = Odometer.options)[k] != null ? (_base = Odometer.options)[k] : _base[k] = v);
      }
      return _results;
    }
  }, 0);

  Odometer.init = function() {
    var el, elements, _i, _len, _ref1, _results;
    if (document.querySelectorAll == null) {
      return;
    }
    elements = document.querySelectorAll(Odometer.options.selector || '.odometer');
    _results = [];
    for (_i = 0, _len = elements.length; _i < _len; _i++) {
      el = elements[_i];
      _results.push(el.odometer = new Odometer({
        el: el,
        value: (_ref1 = el.innerText) != null ? _ref1 : el.textContent
      }));
    }
    return _results;
  };

  if ((((_ref1 = document.documentElement) != null ? _ref1.doScroll : void 0) != null) && (document.createEventObject != null)) {
    _old = document.onreadystatechange;
    document.onreadystatechange = function() {
      if (document.readyState === 'complete' && Odometer.options.auto !== false) {
        Odometer.init();
      }
      return _old != null ? _old.apply(this, arguments) : void 0;
    };
  } else {
    document.addEventListener('DOMContentLoaded', function() {
      if (Odometer.options.auto !== false) {
        return Odometer.init();
      }
    }, false);
  }

  if (typeof define === 'function' && define.amd) {
    define([], function() {
      return Odometer;
    });
  } else if (typeof exports !== "undefined" && exports !== null) {
    module.exports = Odometer;
  } else {
    window.Odometer = Odometer;
  }

}).call(this);
<!DOCTYPE html>
<html>
<head>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script src="odometer.js"></script>
 <link rel="stylesheet" href="https://github.hubspot.com/odometer/themes/odometer-theme-car.css" />
<style>
.odometer {
  font-size: 40px;
}

</style>
<script>
window.odometerOptions = {
  format: '(ddd).dd'
 
};
</script>


</head>

<body>

<div class="odometer">0811</div>

<script>
  setTimeout(function(){
    $('.odometer').html(0422);
  }, 1000);
</script>




</body>
</html>

轻松帮助....

最佳答案

您可以在 <div class="odometer">000</div> 中设置 000在你的 html 中。您当前的值为 <div class="odometer">0811</div> .

请看下面的片段:

(function() {
      var COUNT_FRAMERATE, COUNT_MS_PER_FRAME, DIGIT_FORMAT, DIGIT_HTML, DIGIT_SPEEDBOOST, DURATION, FORMAT_MARK_HTML, FORMAT_PARSER, FRAMERATE, FRAMES_PER_VALUE, MS_PER_FRAME, MutationObserver, Odometer, RIBBON_HTML, TRANSITION_END_EVENTS, TRANSITION_SUPPORT, VALUE_HTML, addClass, createFromHTML, fractionalPart, now, removeClass, requestAnimationFrame, round, transitionCheckStyles, trigger, truncate, wrapJQuery, _jQueryWrapped, _old, _ref, _ref1,
        __slice = [].slice;
        
       var finalDigitCount = finalDigit.toString().length;
       
      VALUE_HTML = '<span class="odometer-value"></span>';

      RIBBON_HTML = '<span class="odometer-ribbon"><span class="odometer-ribbon-inner">' + VALUE_HTML + '</span></span>';

      DIGIT_HTML = '<span class="odometer-digit"><span class="odometer-digit-spacer">8</span><span class="odometer-digit-inner">' + RIBBON_HTML + '</span></span>';

      FORMAT_MARK_HTML = '<span class="odometer-formatting-mark"></span>';

      DIGIT_FORMAT = '(ddd).dd';

      FORMAT_PARSER = /^\(?([^)]*)\)?(?:(.)(d+))?$/;

      FRAMERATE = 30;

      DURATION = 3000;

      COUNT_FRAMERATE = 20;

      FRAMES_PER_VALUE = 2;

      DIGIT_SPEEDBOOST = .5;

      MS_PER_FRAME = 1000 / FRAMERATE;

      COUNT_MS_PER_FRAME = 1000 / COUNT_FRAMERATE;

      TRANSITION_END_EVENTS = 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd';

      transitionCheckStyles = document.createElement('div').style;

      TRANSITION_SUPPORT = (transitionCheckStyles.transition != null) || (transitionCheckStyles.webkitTransition != null) || (transitionCheckStyles.mozTransition != null) || (transitionCheckStyles.oTransition != null);

      requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;

      MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
      
      createFromHTML = function(html) {
        var el;
        el = document.createElement('div');
        el.innerHTML = html;
        return el.children[0];
      };

      removeClass = function(el, name) {
        return el.className = el.className.replace(new RegExp("(^| )" + (name.split(' ').join('|')) + "( |$)", 'gi'), ' ');
      };

      addClass = function(el, name) {
        removeClass(el, name);
        return el.className += " " + name;
      };

      trigger = function(el, name) {
        var evt;
        if (document.createEvent != null) {
          evt = document.createEvent('HTMLEvents');
          evt.initEvent(name, true, true);
          return el.dispatchEvent(evt);
        }
      };

      now = function() {
        var _ref, _ref1;
        return (_ref = (_ref1 = window.performance) != null ? typeof _ref1.now === "function" ? _ref1.now() : void 0 : void 0) != null ? _ref : +(new Date);
      };

      round = function(val, precision) {
        if (precision == null) {
          precision = 0;
        }
        if (!precision) {
          return Math.round(val);
        }
        val *= Math.pow(10, precision);
        val += 0.5;
        val = Math.floor(val);
        
        return String(val /= Math.pow(10, precision)).padStart(finalDigitCount,0);
      };

      truncate = function(val) {
        if (val < 0) {
          return Math.ceil(val);
        } else {
          return Math.floor(val);
        }
      };

      fractionalPart = function(val) {
        return val - round(val);
      };

      _jQueryWrapped = false;

      (wrapJQuery = function() {
        var property, _i, _len, _ref, _results;
        if (_jQueryWrapped) {
          return;
        }
        if (window.jQuery != null) {
          _jQueryWrapped = true;
          _ref = ['html', 'text'];
          _results = [];
          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
            property = _ref[_i];
            _results.push((function(property) {
              var old;
              old = window.jQuery.fn[property];
              return window.jQuery.fn[property] = function(val) {
                var _ref1;
                if ((val == null) || (((_ref1 = this[0]) != null ? _ref1.odometer : void 0) == null)) {
                  return old.apply(this, arguments);
                }
                return this[0].odometer.update(val);
              };
            })(property));
          }
          return _results;
        }
      })();

      setTimeout(wrapJQuery, 0);

      Odometer = (function() {
        function Odometer(options) {
          var e, k, property, v, _base, _i, _len, _ref, _ref1, _ref2,
            _this = this;
          this.options = options;
          this.el = this.options.el;
          if (this.el.odometer != null) {
            return this.el.odometer;
          }
          this.el.odometer = this;
          _ref = Odometer.options;
          for (k in _ref) {
            v = _ref[k];
            if (this.options[k] == null) {
              this.options[k] = v;
            }
          }
          if ((_base = this.options).duration == null) {
            _base.duration = DURATION;
          }
          this.MAX_VALUES = ((this.options.duration / MS_PER_FRAME) / FRAMES_PER_VALUE) | 0;
          this.resetFormat();
          this.value = this.cleanValue((_ref1 = this.options.value) != null ? _ref1 : '');
          this.renderInside();
          this.render();
          try {
            _ref2 = ['innerHTML', 'innerText', 'textContent'];
            for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
              property = _ref2[_i];
              if (this.el[property] != null) {
                (function(property) {
                  return Object.defineProperty(_this.el, property, {
                    get: function() {
                      var _ref3;
                      if (property === 'innerHTML') {
                        return _this.inside.outerHTML;
                      } else {
                        return (_ref3 = _this.inside.innerText) != null ? _ref3 : _this.inside.textContent;
                      }
                    },
                    set: function(val) {
                      return _this.update(val);
                    }
                  });
                })(property);
              }
            }
          } catch (_error) {
            e = _error;
            this.watchForMutations();
          }
          this;
        }

        Odometer.prototype.renderInside = function() {
          this.inside = document.createElement('div');
          this.inside.className = 'odometer-inside';
          this.el.innerHTML = '';
          return this.el.appendChild(this.inside);
        };

        Odometer.prototype.watchForMutations = function() {
          var e,
            _this = this;
          if (MutationObserver == null) {
            return;
          }
          try {
            if (this.observer == null) {
              this.observer = new MutationObserver(function(mutations) {
                var newVal;
                newVal = _this.el.innerText;
                _this.renderInside();
                _this.render(_this.value);
                return _this.update(newVal);
              });
            }
            this.watchMutations = true;
            return this.startWatchingMutations();
          } catch (_error) {
            e = _error;
          }
        };

        Odometer.prototype.startWatchingMutations = function() {
          if (this.watchMutations) {
            return this.observer.observe(this.el, {
              childList: true
            });
          }
        };

        Odometer.prototype.stopWatchingMutations = function() {
          var _ref;
          return (_ref = this.observer) != null ? _ref.disconnect() : void 0;
        };

        Odometer.prototype.cleanValue = function(val) {
          var _ref;
          if (typeof val === 'string') {
            val = val.replace((_ref = this.format.radix) != null ? _ref : '.', '<radix>');
            val = val.replace(/[.,]/g, '');
            val = val.replace('<radix>', '.');
            val = parseFloat(val, 10) || 0;
          }
          return round(val, this.format.precision);
        };

        Odometer.prototype.bindTransitionEnd = function() {
          var event, renderEnqueued, _i, _len, _ref, _results,
            _this = this;
          if (this.transitionEndBound) {
            return;
          }
          this.transitionEndBound = true;
          renderEnqueued = false;
          _ref = TRANSITION_END_EVENTS.split(' ');
          _results = [];
          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
            event = _ref[_i];
            _results.push(this.el.addEventListener(event, function() {
              if (renderEnqueued) {
                return true;
              }
              renderEnqueued = true;
              setTimeout(function() {
                _this.render();
                renderEnqueued = false;
                return trigger(_this.el, 'odometerdone');
              }, 0);
              return true;
            }, false));
          }
          return _results;
        };

        Odometer.prototype.resetFormat = function() {
          var format, fractional, parsed, precision, radix, repeating, _ref, _ref1;
          format = (_ref = this.options.format) != null ? _ref : DIGIT_FORMAT;
          format || (format = 'd');
          parsed = FORMAT_PARSER.exec(format);
          if (!parsed) {
            throw new Error("Odometer: Unparsable digit format");
          }
          _ref1 = parsed.slice(1, 4), repeating = _ref1[0], radix = _ref1[1], fractional = _ref1[2];
          precision = (fractional != null ? fractional.length : void 0) || 0;
          return this.format = {
            repeating: repeating,
            radix: radix,
            precision: precision
          };
        };

        Odometer.prototype.render = function(value) {
          var classes, cls, match, newClasses, theme, _i, _len;
          if (value == null) {
            value = this.value;
          }
          this.stopWatchingMutations();
          this.resetFormat();
          this.inside.innerHTML = '';
          theme = this.options.theme;
          classes = this.el.className.split(' ');
          newClasses = [];
          for (_i = 0, _len = classes.length; _i < _len; _i++) {
            cls = classes[_i];
            if (!cls.length) {
              continue;
            }
            if (match = /^odometer-theme-(.+)$/.exec(cls)) {
              theme = match[1];
              continue;
            }
            if (/^odometer(-|$)/.test(cls)) {
              continue;
            }
            newClasses.push(cls);
          }
          newClasses.push('odometer');
          if (!TRANSITION_SUPPORT) {
            newClasses.push('odometer-no-transitions');
          }
          if (theme) {
            newClasses.push("odometer-theme-" + theme);
          } else {
            newClasses.push("odometer-auto-theme");
          }
          this.el.className = newClasses.join(' ');
          this.ribbons = {};
          this.formatDigits(value);
          return this.startWatchingMutations();
        };

        Odometer.prototype.formatDigits = function(value) {
          var digit, valueDigit, valueString, wholePart, _i, _j, _len, _len1, _ref, _ref1;
          this.digits = [];
          if (this.options.formatFunction) {
            valueString = this.options.formatFunction(value);
            _ref = valueString.split('').reverse();
            for (_i = 0, _len = _ref.length; _i < _len; _i++) {
              valueDigit = _ref[_i];
              if (valueDigit.match(/0-9/)) {
                digit = this.renderDigit();
                if (currentMinutes.toString().length == 1) {
                    currentMinutes = "0" + currentMinutes;
                }
                digit.querySelector('.odometer-value').innerHTML = valueDigit;
                this.digits.push(digit);
                this.insertDigit(digit);
              } else {
                this.addSpacer(valueDigit);
              }
            }
          } else {
            wholePart = !this.format.precision || !fractionalPart(value) || false;
            _ref1 = value.toString().split('').reverse();
            for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
              digit = _ref1[_j];
              if (digit === '.') {
                wholePart = true;
              }
              this.addDigit(digit, wholePart);
            }
          }
        };

        Odometer.prototype.update = function(newValue) {
          var diff,
            _this = this;
          newValue = this.cleanValue(newValue);
          if (!(diff = newValue - this.value)) {
            return;
          }
          removeClass(this.el, 'odometer-animating-up odometer-animating-down odometer-animating');
          if (diff > 0) {
            addClass(this.el, 'odometer-animating-up');
          } else {
            addClass(this.el, 'odometer-animating-down');
          }
          this.stopWatchingMutations();
          this.animate(newValue);
          this.startWatchingMutations();
          setTimeout(function() {
            _this.el.offsetHeight;
            return addClass(_this.el, 'odometer-animating');
          }, 0);
          return this.value = newValue;
        };

        Odometer.prototype.renderDigit = function() {
          return createFromHTML(DIGIT_HTML);
        };

        Odometer.prototype.insertDigit = function(digit, before) {
          if (before != null) {
            return this.inside.insertBefore(digit, before);
          } else if (!this.inside.children.length) {
            return this.inside.appendChild(digit);
          } else {
            return this.inside.insertBefore(digit, this.inside.children[0]);
          }
        };

        Odometer.prototype.addSpacer = function(chr, before, extraClasses) {
          var spacer;
          spacer = createFromHTML(FORMAT_MARK_HTML);
          spacer.innerHTML = chr;
          if (extraClasses) {
            addClass(spacer, extraClasses);
          }
          return this.insertDigit(spacer, before);
        };

        Odometer.prototype.addDigit = function(value, repeating) {
          var chr, digit, resetted, _ref;
          if (repeating == null) {
            repeating = true;
          }
          if (value === '-') {
            return this.addSpacer(value, null, 'odometer-negation-mark');
          }
          if (value === '.') {
            return this.addSpacer((_ref = this.format.radix) != null ? _ref : '.', null, 'odometer-radix-mark');
          }
          if (repeating) {
            resetted = false;
            while (true) {
              if (!this.format.repeating.length) {
                if (resetted) {
                  throw new Error("Bad odometer format without digits");
                }
                this.resetFormat();
                resetted = true;
              }
              chr = this.format.repeating[this.format.repeating.length - 1];
              this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1);
              if (chr === 'd') {
                break;
              }
              this.addSpacer(chr);
            }
          }
          digit = this.renderDigit();
          digit.querySelector('.odometer-value').innerHTML = value;
          this.digits.push(digit);
          return this.insertDigit(digit);
        };

        Odometer.prototype.animate = function(newValue) {
          if (!TRANSITION_SUPPORT || this.options.animation === 'count') {
            return this.animateCount(newValue);
          } else {
            return this.animateSlide(newValue);
          }
        };

        Odometer.prototype.animateCount = function(newValue) {
          var cur, diff, last, start, tick,
            _this = this;
          if (!(diff = +newValue - this.value)) {
            return;
          }
          start = last = now();
          cur = this.value;
          return (tick = function() {
            var delta, dist, fraction;
            if ((now() - start) > _this.options.duration) {
              _this.value = newValue;
              _this.render();
              trigger(_this.el, 'odometerdone');
              return;
            }
            delta = now() - last;
            if (delta > COUNT_MS_PER_FRAME) {
              last = now();
              fraction = delta / _this.options.duration;
              dist = diff * fraction;
              cur += dist;
              _this.render(Math.round(cur));
            }
            if (requestAnimationFrame != null) {
              return requestAnimationFrame(tick);
            } else {
              return setTimeout(tick, COUNT_MS_PER_FRAME);
            }
          })();
        };

        Odometer.prototype.getDigitCount = function() {
          var i, max, value, values, _i, _len;
          values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
          for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
            value = values[i];
            values[i] = Math.abs(value);
          }
          max = Math.max.apply(Math, values);
          return Math.ceil(Math.log(max + 1) / Math.log(10));
        };

        Odometer.prototype.getFractionalDigitCount = function() {
          var i, parser, parts, value, values, _i, _len;
          values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
          parser = /^\-?\d*\.(\d*?)0*$/;
          for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
            value = values[i];
            values[i] = value.toString();
            parts = parser.exec(values[i]);
            if (parts == null) {
              values[i] = 0;
            } else {
              values[i] = parts[1].length;
            }
          }
          return Math.max.apply(Math, values);
        };

        Odometer.prototype.resetDigits = function() {
          this.digits = [];
          this.ribbons = [];
          this.inside.innerHTML = '';
          return this.resetFormat();
        };

        Odometer.prototype.animateSlide = function(newValue) {
          var boosted, cur, diff, digitCount, digits, dist, end, fractionalCount, frame, frames, i, incr, j, mark, numEl, oldValue, start, _base, _i, _j, _k, _l, _len, _len1, _len2, _m, _ref, _results;
          oldValue = this.value;
          fractionalCount = this.getFractionalDigitCount(oldValue, newValue);
          if (fractionalCount) {
            newValue = newValue * Math.pow(10, fractionalCount);
            oldValue = oldValue * Math.pow(10, fractionalCount);
          }
          if (!(diff = newValue - oldValue)) {
            return;
          }
          this.bindTransitionEnd();
          digitCount = this.getDigitCount(oldValue, newValue);
          digits = [];
          boosted = 0;
          for (i = _i = 0; 0 <= digitCount ? _i < digitCount : _i > digitCount; i = 0 <= digitCount ? ++_i : --_i) {
            start = truncate(oldValue / Math.pow(10, digitCount - i - 1));
            end = truncate(newValue / Math.pow(10, digitCount - i - 1));
            dist = end - start;
            if (Math.abs(dist) > this.MAX_VALUES) {
              frames = [];
              incr = dist / (this.MAX_VALUES + this.MAX_VALUES * boosted * DIGIT_SPEEDBOOST);
              cur = start;
              while ((dist > 0 && cur < end) || (dist < 0 && cur > end)) {
                frames.push(Math.round(cur));
                cur += incr;
              }
              if (frames[frames.length - 1] !== end) {
                frames.push(end);
              }
              boosted++;
            } else {
              frames = (function() {
                _results = [];
                for (var _j = start; start <= end ? _j <= end : _j >= end; start <= end ? _j++ : _j--){ _results.push(_j); }
                return _results;
              }).apply(this);
            }
            for (i = _k = 0, _len = frames.length; _k < _len; i = ++_k) {
              frame = frames[i];
              frames[i] = Math.abs(frame % 10);
            }
            digits.push(frames);
          }
          this.resetDigits();
          _ref = digits.reverse();
          for (i = _l = 0, _len1 = _ref.length; _l < _len1; i = ++_l) {
            frames = _ref[i];
            if (!this.digits[i]) {
              this.addDigit(' ', i >= fractionalCount);
            }
            if ((_base = this.ribbons)[i] == null) {
              _base[i] = this.digits[i].querySelector('.odometer-ribbon-inner');
            }
            this.ribbons[i].innerHTML = '';
            if (diff < 0) {
              frames = frames.reverse();
            }
            for (j = _m = 0, _len2 = frames.length; _m < _len2; j = ++_m) {
              frame = frames[j];
              numEl = document.createElement('div');
              numEl.className = 'odometer-value';
              numEl.innerHTML = frame;
              this.ribbons[i].appendChild(numEl);
              if (j === frames.length - 1) {
                addClass(numEl, 'odometer-last-value');
              }
              if (j === 0) {
                addClass(numEl, 'odometer-first-value');
              }
            }
          }
          if (start < 0) {
            this.addDigit('-');
          }
          mark = this.inside.querySelector('.odometer-radix-mark');
          if (mark != null) {
            mark.parent.removeChild(mark);
          }
          if (fractionalCount) {
            return this.addSpacer(this.format.radix, this.digits[fractionalCount - 1], 'odometer-radix-mark');
          }
        };

        return Odometer;

      })();

      Odometer.options = (_ref = window.odometerOptions) != null ? _ref : {};

      setTimeout(function() {
        var k, v, _base, _ref1, _results;
        if (window.odometerOptions) {
          _ref1 = window.odometerOptions;
          _results = [];
          for (k in _ref1) {
            v = _ref1[k];
            _results.push((_base = Odometer.options)[k] != null ? (_base = Odometer.options)[k] : _base[k] = v);
          }
          return _results;
        }
      }, 0);

      Odometer.init = function() {
        var el, elements, _i, _len, _ref1, _results;
        if (document.querySelectorAll == null) {
          return;
        }
        elements = document.querySelectorAll(Odometer.options.selector || '.odometer');
        _results = [];
        for (_i = 0, _len = elements.length; _i < _len; _i++) {
          el = elements[_i];
          _results.push(el.odometer = new Odometer({
            el: el,
            value: (_ref1 = el.innerText) != null ? _ref1 : el.textContent
          }));
        }
        return _results;
      };

      if ((((_ref1 = document.documentElement) != null ? _ref1.doScroll : void 0) != null) && (document.createEventObject != null)) {
        _old = document.onreadystatechange;
        document.onreadystatechange = function() {
          if (document.readyState === 'complete' && Odometer.options.auto !== false) {
            Odometer.init();
          }
          return _old != null ? _old.apply(this, arguments) : void 0;
        };
      } else {
        document.addEventListener('DOMContentLoaded', function() {
          if (Odometer.options.auto !== false) {
            return Odometer.init();
          }
        }, false);
      }

      if (typeof define === 'function' && define.amd) {
        define([], function() {
          return Odometer;
        });
      } else if (typeof exports !== "undefined" && exports !== null) {
        module.exports = Odometer;
      } else {
        window.Odometer = Odometer;
      }

    }).call(this);
<!DOCTYPE html>
    <html>
    <head>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script src="odometer.js"></script>
     <link rel="stylesheet" href="https://github.hubspot.com/odometer/themes/odometer-theme-car.css" />
    <style>
    .odometer {
      font-size: 40px;
    }

    </style>
    <script>
    window.odometerOptions = {
      format: '(ddd).dd'
     
    };
    </script>


    </head>

    <body>

    <div class="odometer">000</div>

    <script>
    var finalDigit = 274;
      setTimeout(function(){
        $('.odometer').html(finalDigit);
      }, 1000);
    </script>




    </body>
    </html>

更新 1:

我在 JS 中做了一些改动,还有 setTimeout 中最后一位的赋值方式。请在更新的代码段中找到它。

希望这就是您所需要的。

关于javascript - 里程表计数器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980158/

相关文章:

javascript - javascript中的Epoch到日期转换给出了错误的答案

javascript - React 我无法关闭价格弹出窗口

css - css 中的背景淡入淡出 - 旧浏览器的回退

HTML & CSS : How to put quotation mark and text in same height?

javascript - 有没有办法观察 AngularJS 世界之外触发的属性变化?

ios - cordova/ios 媒体查询方向从不报告 "landscape"

javascript - 如何调用 click( ) 属性?

javascript - Javascript 中具有唯一小数点的纯数字文本字段

jquery - rake 中止! ExecJS::运行时错误:(execjs):1

javascript - "jQuery(...)"而不是 "$(...)"