Ответ 1
Кажется, 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/
Вы можете увеличивать их в течение заданного интервала времени от любого начала до любого конечного значения, независимо от его точности числа.
Он реализован для текста SVG, но, конечно же, работает одинаково для стандартного HTML-текста.
Если вам нужна только функция простого твина для округлых чисел, она становится немного более легкой.
.tween("text", function(d) {
var i = d3.interpolate(this.textContent, d),
return function(t) {
this.textContent = Math.round(i(t));
};
});