Javascript 用逗号递增svg文本
我试图在d3.js中从一个数字增加一些文本到另一个数字。这正是我想要的,但我需要传递一个带有美元符号和逗号的数字,而不仅仅是一个数字。如果我尝试传入已格式化的值,它将返回NaN。有什么建议吗 例如:Javascript 用逗号递增svg文本,javascript,svg,d3.js,Javascript,Svg,D3.js,我试图在d3.js中从一个数字增加一些文本到另一个数字。这正是我想要的,但我需要传递一个带有美元符号和逗号的数字,而不仅仅是一个数字。如果我尝试传入已格式化的值,它将返回NaN。有什么建议吗 例如: function numberWithCommas(x) { var parts = x.toString().split("."); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
function numberWithCommas(x) {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
var foo = numberWithCommas(2000); //foo now = 2,000
d3.select('body')
.text(0)
.transition()
.duration(duration)
.ease('linear')
.tween("text", function() {
var i = d3.interpolate(this.textContent, foo);
return function(t) {
this.textContent = Math.round(i(t));
};
});
编辑:我的解决方案:
d3.select("#totaltext")
.transition()
.duration(500)
.ease('linear')
.tween("text", function() {
var i = d3.interpolate(this.textContent, sum);
return function(t) {
this.textContent = '$' + d3.format(",")(Math.round(i(t)));
};
})
你需要去掉$和逗号符号,像这样的东西
var number = Number(x.replace(/[^0-9\.]+/g,""));
如果你想插入货币,你必须
你能用一种格式来表示实际的数字吗?对不起,我不清楚。我希望正在更改的号码有$和逗号。所以用户看到2000美元
d3.interpolators.push(function(a, b) {
var re = /^\$([0-9,.]+)$/, ma, mb, f = d3.format(",.02f");
if ((ma = re.exec(a)) && (mb = re.exec(b))) {
a = parseFloat(ma[1]);
b = parseFloat(mb[1]) - a;
return function(t) {
return "$" + f(a + b * t);
};
}
});