我有以下代码通过 dojox.charting 创建图表图形:
function createChart() {
var node = dojo.byId("surfaceDiv");
while (node.hasChildNodes())
{
node.removeChild(node.lastChild); // remove all the children graphics
}
var nodes = "<div id='chart1' style='width: 10px; height: 10px;'></div><div id='legend1' ></div>";
dojo.html.set(node, nodes);
var nodeChart = dojo.byId("chart1");
var nodeLegend = dojo.byId("legend1");
var chart1 = new dojox.charting.Chart2D(nodeChart);
// set chart types and point series
chart1.render();
// now to add legend:
var legendNode = new dojox.charting.widget.Legent(
{chart: chart1}, nodeLegend.id));
}
该功能适用于第一次通话;但是,如果再次调用,图表显示OK,但图例不显示。在萤火虫中,我注意到在 manager.xd.js(第 8 行)中有一条错误提示“尝试使用 id==legend1 注册小部件,但该 id 已注册”。看起来 dojox 库中的某个地方缓存了具有相同 ID 的前一个图例对象。
我想我必须清除以前注册或缓存的任何图例。我怎样才能做到这一点?
顺便说一句,在我的 html 页面中,我有几个 ancor 链接来调用 JavaScript 函数以在 id="surfaceDiv" 的 div 节点中绘制不同的图形,并且图例节点"是 id="legendDiv" 的下一个 div。因此,可以再次调用上述函数。