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));
}
関数は最初の呼び出しでは正常に機能します。ただし、もう一度呼び出すと、チャートは正常に表示されますが、凡例は表示されません。firebug で、manager.xd.js (8 行目) に「id==legend1 でウィジェットを登録しようとしましたが、その ID は既に登録されています」というエラーがあることに気付きました。dojox のライブラリーのどこかに、同じ ID を持つ前の凡例オブジェクトがキャッシュされているようです。
以前に登録またはキャッシュされた凡例を消去する必要があると思います。どうやってやるの?
ところで、私の html ページには、JavaScript 関数を呼び出して id="surfaceDiv" の div ノードにさまざまなグラフィックを描画するためのいくつかのアンカー リンクがあり、「凡例ノード」は id="legendDiv" の次の div です。 、上記の関数を再度呼び出すことができます。