2016-06-02 2 views
0

Я внедрил запятую для roundNum, из которой я показываю общее число, которое перемещается;Проблемы с добавлением запятых к номерам

$.fn.digits = function(){ 
     return this.each(function(){ 
      $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
     }); 
    }; 

$('.total').text(roundNum).digits(); 

Однако я не могу сделать то же самое с фактическим счетчиком.

$.fn.countTo = function(options) { 
    // merge the default plugin settings with the custom options 
    options = $.extend({}, $.fn.countTo.defaults, options || {}); 

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

    return $(this).each(function() { 
     var _this = this, 
      loopCount = 0, 
      value = options.from, 
      interval = setInterval(updateTimer, options.refreshInterval); 

     function updateTimer() { 
      value += increment; 
      loopCount++; 
      $(_this).html(value.toFixed(options.decimals)); 

      if (typeof(options.onUpdate) == 'function') { 
       options.onUpdate.call(_this, value); 
      } 

      if (loopCount >= loops) { 
       clearInterval(interval); 
       value = options.to; 

       if (typeof(options.onComplete) == 'function') { 
        options.onComplete.call(_this, value); 
       } 
      } 
     } 
    }); 
}; 

$.fn.countTo.defaults = { 
    from: 0, // the number the element should start at 
    to: 100, // 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 
    onUpdate: null, // callback method for every time the element is updated, 
    onComplete: null, // callback method for when the element finishes updating 
}; 


$('.timer').countTo({ 
    from: 0, 
    to: roundNum, 
    speed: speed, 
    refreshInterval: 600, 
    onComplete: function() { 
     console.debug(this); 
    } 
}); 
+0

Этим вопрос уже ответил на эту тему: http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript –

+0

@SteveKline, если вы, пожалуйста, прочитаете вопрос, я уже есть функция, однако у меня возникают проблемы с ее внедрением в другую. –

+0

Справа, извините, я пропустил эту часть. Извиняюсь. –

ответ

1

Проблема в том, что это:

$('.total').text(roundNum) 

возвращает строку. Итак, когда вы попробуете добавить .digits() на конце его:

$('.total').text(roundNum).digits(); 

Он ищет метод .digits() на нитке, а не на объект JQuery, потому что это то, что $('.total').text(roundNum) возвращается.

Существует несколько возможных способов, в зависимости от того, как вы хотите, чтобы это работало. Возможно, что имеет больше смысла, чтобы просто сделать свой digits() код в простую функцию, которая принимает входящий номер или строку и возвращает разделители-Fied строки, так что вы можете просто сделать это:

$('.total').text(digits(roundNum)); 
+0

Могу я не все '.digits();' из '' .fn.countTo''? –

+0

Когда вы вызываете 'obj.method()', вы должны вызывать метод, относящийся к типу объекта, который у вас есть, и он должен быть объектом, который имеет правильные данные экземпляра для работы. Итак, когда вы спрашиваете, можете ли вы вызывать '.digits()' из уверенного, вы можете, если вы его правильно назовете, но если '.digits()' не будет работать с элементом DOM, нет никакого смысла в том, чтобы Метод jQuery. Объект jQuery содержит список элементов DOM, поэтому методы jQuery должны быть методами, которые работают непосредственно с этим списком элементов DOM. Вы можете заставить '.digits()' работать таким образом, но это, похоже, не подходит. – jfriend00

+0

А, я думаю, я тебя достал. Поэтому мне лучше всего перейти в функцию и использовать '.replace (/ (\ d) (? = (\ D \ d \ d) + (?! \ D))/g," $ 1, ")' _somewhere_ I просто нужно теперь вычислить _where_ –

Смежные вопросы