2016-05-10 33 views
0

我是新來的jQuery和JavaScript,我想使它增加每毫秒,並用一個跨度替換每個數字,它似乎像替換跨度正在工作,但toFixed正在造成一個錯誤以固定和替換似乎並不工作

Uncaught TypeError: Cannot read property 'toFixed' of undefined.

任何人都可以幫助我嗎?

function getValueTotal(){ 
    var strAnn = ''; 
    $.ajax({ 
     type: 'POST', 
     url: '../a/getTotal', 
     data: {info:4}, 
     dataType: 'json' 
    }).success(function(data){ 
     if(data.status == '0'){ 
      if(data.d.value=="0"){ 
       strAnn = 8414735; 
      }else{ 
       strAnn = data.d.value; 
      }   
     }else{ 
      strAnn = 29451147; 
     } 
     $("#pTotal").html(strAnn); 
      $('#pTotal').countTo({ 
       format: 'money', 
       from: strAnn, 
       to: 999999999.99, 
       speed: 100000000, 
       refresh_interval: 0.00001, 
       on_complete: function(value) { 
        $(this).hide().fadeIn(1000); 
       } 
      }); 

    }); 
} 

(function($) { 
    $.fn.countTo = function(options) { 
     options = $.extend({}, $.fn.countTo.defaults, options || {}); 
     var loops = Math.ceil(options.speed/options.refresh_interval), 
      increment = (options.to - options.from)/loops; 
     return $(this).each(function() { 
      var _this = this, 
       loop_count = 0, 
       value = options.from, 
       interval = setInterval(update_timer, options.refresh_interval); 
      function update_timer() { 
       value += increment; 
       loop_count++; 
       if(options.format == 'money') { 
        // $(_this).html('$' + number_with_commas(value.toFixed(options.decimals))); 
        var valueData = $(_this).value.toFixed(options.decimals); 
        $(_this).html('$' + valueData.replace(/([^\x00-\x80]|\w)/g , ' <span class="some-number">$1</span>')); 

       } else { 
        $(_this).html(value.toFixed(options.decimals)); 
       } 
       if(typeof(options.on_update) == 'function') { 
        options.on_update.call(_this, value); 
       } 
       if(loop_count >= loops) { 
        clearInterval(interval); 
        value = options.to; 
        if(typeof(options.on_complete) == 'function') { 
         options.on_complete.call(_this, value); 
        } 
       } 
      } 

     }); 
    }; 
    $.fn.countTo.defaults = { 
     from: 0, 
     to: 100, 
     speed: 1000, 
     refresh_interval: 100, 
     decimals: 2, 
     on_update: null, 
     on_complete: null 
    }; 
})(jQuery); 

回答

0

更改此

var valueData = $(_this).value.toFixed(options.decimals); 

var valueData = parseFloat($(_this).value); 
if(!isNaN(valueData)){ 
    valueData = valueData.toFixed(options.decimals); 
} 

值是字符串,並沒有在字符串對象沒有toFixed功能。 而且請注意,該值不是一個數字,它會拋出異常。

+0

我做過了,它表明了我的價值。 – MuthaFury

+1

@MuthaFury因爲你的價值不是一個數字。我編輯了答案 –

+0

我們假設,如果這個值是29451147.324234,怎麼把它變成2個十進制數? – MuthaFury