如何 select(并更改)已附加到 dom 的 svg

How to select (and alter) an svg already appended to dom

我有一个 D3 图表附加到 dom。如果我包含下面的代码,图表会立即动画化。但是,我不希望这种情况发生。因此,我想稍后添加转换——我再次 运行 添加图表的相同函数,但使用 if/else 语句,我避免第二次附加图表,而是 运行下面的代码——问题是图表现在没有动画。我想知道这是否是因为我没有提供足够的信息来说明 select-- ({}) 不够具体?--,或者它是否可能是另一个问题?

                 var transition = d3.select({}).transition()
                    .duration(250)
                    .ease("linear");
                    var that = this;

如果您之前添加了 d3 图表,您可能存储了对 svg 的引用?

var svg = d3.select('body').append('svg').attr({/*...*/}); // etc.

假设上面的做法你可以重用变量:

svg.transition().duration(250).ease("linear");

如果以后必须执行 select,则必须为 select 语句使用字符串:

d3.select('svg').duration(250).ease("linear");
// selects the first <SVG> tag found in the DOM