d3检索并添加到当前选择的属性值

时间:2013-12-02 23:57:13

标签: d3.js

我正在尝试获取元素翻译的值。

例如,如果我选择x轴:

d3.select('.x.axis').attr("transform")

然后我得到

"translate(0,112)"

如何在不解析正则表达式的情况下获取0112

我正在尝试这样做,以便我可以添加到该值。在伪代码中:

d3.selectAll('.x.axis').attr('transform', 'translate('
        .attr('transform').match(/(\d+)(\.\d+)?/g)[0] // <-- clearly won't work
        + additional_value
        + ', 0)');

2 个答案:

答案 0 :(得分:34)

D3为此提供了transform() function

var t = d3.transform(d3.select('.x.axis').attr("transform")),
    x = t.translate[0],
    y = t.translate[1];

答案 1 :(得分:4)

如果你想使用selectAll,你可以尝试这样的事情:

// move ticks to the center of the x-axis   
var transform;
d3.selectAll('.tick').attr('transform', function(){
  transform = d3.transform(d3.select(this).attr("transform"));
  return "translate("+transform.translate[0]+", -3)";
});