D3.js 当另一个图中发生事件时,同一页中的两个d3图受到影响
在html页面中,我们有两个div 一个div由树布局组成,第二个div由另一个图形组成。两者都用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添
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 + ")");
});
}
这和这个问题有什么关系?嗨,拉尔斯,我试过你的一些建议…但问题是两个全局变量在两个图表中是相同的!!!!谢谢