0

我正在尝试将 2 个 d3.js 树图放在此处http://bl.ocks.org/1249394 在一页上。两棵树都将加载来自 Javascript 对象的不同数据。第一个将出现在:

<div id="chart"></div>

第二棵树将被加载到:

<div id="chart2"></div>

#chart 和 #chart2 都在同一页面上,第一棵树 (#chart) 出现在页面顶部,第二棵树 (#chart2) 位于其下方,因为这就是图表 div 的排列方式。为此,我两次应用了来自http://bl.ocks.org/1249394的相同代码。每个 div 一个,两段代码之间的唯一区别是树的位置,即树 1:#chart 和树 2:#chart2。

树1:

var vis = d3.select("#chart").append("svg:svg")

树2:

var vis = d3.select("#chart2").append("svg:svg")

其他一切都保持不变,包括变量和函数名称。这很好用,两个图表都按原样显示,除了 click 函数(代码中的最后一个函数:)只有第二棵树能够在点击树节点时折叠和展开,第一棵树不再能够这样做这个,第一个不再是交互的。

我该如何解决?

4

1 回答 1

2

vis当您绘制交互依赖的第二棵树时,您正在覆盖变量。如果要创建多个图表,则需要创建一个闭包,以便每棵树都在自己的范围内。这样他们就不会互相干扰。

Mike 在http://bost.ocks.org/mike/chart/上写了一篇关于创建可重用图表的好文章。他介绍了如何创建封闭和曲面属性。

于 2012-09-23T19:24:12.197 回答