Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用逗号递增svg文本_Javascript_Svg_D3.js - Fatal编程技术网

Javascript 用逗号递增svg文本

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

我试图在d3.js中从一个数字增加一些文本到另一个数字。这正是我想要的,但我需要传递一个带有美元符号和逗号的数字,而不仅仅是一个数字。如果我尝试传入已格式化的值,它将返回NaN。有什么建议吗

例如:

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