toFixed和replace似乎不起作用

时间:2016-05-10 07:40:28

标签: javascript jquery

我是jQuery和javascript的新手,我想让它每毫秒增加并用一个跨度替换每个数字,似乎替换了跨度工作但toFixed导致错误< / p>

  

未捕获的TypeError:无法读取属性&#39; toFixed&#39;未定义的。

任何人都可以帮我吗?

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);

1 个答案:

答案 0 :(得分:0)

更改此

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

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

值为字符串,字符串对象中没有toFixed函数。 并且还要注意,该值不是一个会引发异常的数字。