使用 dojo,我使用 ColumnsPlot 创建了一个图表。图表按我想要的方式创建和显示。为了处理对列的单击并更改单击列的颜色,我有以下代码:
var handler = barChart.connectToPlot("default", function (event) {
if (event.type == "onclick") {
var currentSeriesData = event.run.data;
barChart.updateSeries("Yearly Offense Count", reverseColors(currentSeriesData, event.index));
barChart.render();
}
});
而 reverseColors 是:
reverseColors = function (data, index) {
var tempData = [];
for (var i = 0; i < data.length; i++) {
tempData.push(data[i]);
if (i == index) {
tempData[i].fill = "red";
} else {
tempData[i].fill = "green";
}
}
console.log(i + " - " + tempData[i].fill);
return tempData;
}
我正在 Google 中进行测试并使用开发者工具进行调试。如果我在 if 语句中设置断点并调试应用程序,barChart 将更新,单击的列变为红色,而所有其他列均为绿色(根据需要)。如果我没有调试,barChart 会更新,但所有列都是绿色的(最初图表是用除一个红色列之外的所有绿色列创建的)。
reverseColors 函数在调试时以正确的格式返回数据并使用正确的填充,当不在控制台中调试时,我有 1 个红色,其余项目为绿色,正如预期的那样。但我的图表只有绿色列。
我在搞砸什么?
道场初学者!
编辑:在 Chrome 中不工作,在 Firefox 中工作一次,在 IE8 中工作正常。