D3.js 当另一个图中发生事件时,同一页中的两个d3图受到影响

D3.js 当另一个图中发生事件时,同一页中的两个d3图受到影响,d3.js,D3.js,在html页面中,我们有两个div 一个div由树布局组成,第二个div由另一个图形组成。两者都用d3编写 d3.select("g").transition().duration(duration).attr("transform", "translate(" + x + "," + y + ")scale(" + scale + ")"); 上面的语句d3.select'g'引起了问题,它也在尝试选择另一个div,并且正在影响它 尝试将id添

在html页面中,我们有两个div

一个div由树布局组成,第二个div由另一个图形组成。两者都用d3编写

d3.select("g").transition().duration(duration).attr("transform",
                        "translate(" + x + "," + y + ")scale(" + scale + ")");
上面的语句d3.select'g'引起了问题,它也在尝试选择另一个div,并且正在影响它

尝试将id添加到每个容器中,但不起作用


提前感谢

使用类似的方法

function animateFirstStep() {
                            d3.select(this).transition().delay(0).duration(
                                    100)

                            .attr("r", function(d) {
                                return d.r + 4;
                            });
或通过选择器来代替此选项

如果函数是generateChartselector,请说出名称

像generateChartNameofDiv这样调用函数


它应该可以工作

您可以做一些事情来区分不同的元素

为div提供id并在选择器中使用它们。d3.选择Divone>svg>g 为g元素分配不同的类。d3.选择G.classone 创建SVG时保留对SVG的引用,并从中进行选择。 下面是一些这样的示例代码:

var svg1 = d3.select("#divone").append("svg"),
    svg2 = d3.select("#divtwo").append("svg");
// more code
svg1.select("g");

哪种方法是最好的完全取决于您的应用程序,但一般来说,最后一种解决方案是最安全的,因为您要保留对子选择的显式引用。

使用类似的方法

 .......
 var g = d3.select(this)
 redraw(g);
 .....


 function redraw(g) {
    g.selectAll(".resize").attr("transform", function (d) {
            "translate(" + x + "," + y + ")scale(" + scale + ")");            

  });
}

这和这个问题有什么关系?嗨,拉尔斯,我试过你的一些建议…但问题是两个全局变量在两个图表中是相同的!!!!谢谢