看来 d3JS 已经提供了一个合适的函数,称为“tween”
这是代码示例的重要部分。
.tween("text", function(d) {
var i = d3.interpolate(this.textContent, d),
prec = (d + "").split("."),
round = (prec.length > 1) ? Math.pow(10, prec[1].length) : 1;
return function(t) {
this.textContent = Math.round(i(t) * round) / round;
};
});
http://jsfiddle.net/c5YVX/280/ http://jsfiddle.net/c5YVX/280/
您可以在给定时间间隔内从任何开始值到任何结束值递增它们,无论其数字精度如何。
它针对 SVG 文本实现,但当然对于标准 html 文本也同样有效。
如果您只需要四舍五入数字的普通补间函数,那么它会变得更轻量级。
.tween("text", function(d) {
var i = d3.interpolate(this.textContent, d),
return function(t) {
this.textContent = Math.round(i(t));
};
});