我目前正在使用jquery填充div,但需要使用千位分隔符和两位小数格式化输出,同时将输出保持为数字。
仅供参考我目前正在使用以下方式填充div:
var prev_count = 120;
var new_count = 20.50;
var count_till = prev_count < new_count ? new_count : new_count - 1;
jQuery({ Counter: prev_count }).animate({ Counter: count_till }, {
duration: 600,
easing: 'swing',
step: function () {
jQuery("#count_div").text(Math.ceil(this.Counter));
}
});
起始变量是120,这意味着倒计时到20.50,但它结束于20,而不是20.50,这是否可能,如果是这样,我将怎么做呢?
这是我的jsfiddle
答案 0 :(得分:1)
Math.Ceil返回大于或等于给定数字的最小整数。 Integers do not have fractions(这就是你要找的)
您需要将输出数字的行替换为:
jQuery("#count_div").html(this.Counter.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,'));
这是一个有效的JSFiddle:https://jsfiddle.net/12g2pj4L/2/
答案 1 :(得分:0)
好的,所以我设法自己解决这个问题,使用函数添加千位分隔符,并使用toFixed(2)设置小数位,代码如下:
$.fn.digits = function(){
return this.each(function(){
$(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") );
})
}
var prev_count = "1125";
prev_count = prev_count.split(',').join('');
prev_count = parseInt(prev_count);
var new_count = 1320.50;
var count_till = prev_count < new_count ? new_count : new_count;
jQuery({ Counter: prev_count }).animate({ Counter: count_till }, {
duration: 7000,
easing: 'swing',
step: function () {
jQuery("#count_div").html(this.Counter.toFixed(2)).digits();
}
});
并摆弄here