我使用了Highcharts文档来为图表启用拖动选择。我正在尝试扩展这个,以便我在第一个图表上选择的任何点,也将在页面上的其他图表上选择(x轴匹配)。
我找到了一种方法来做到这一点,&它适用于页面上的2或3个高图,但当我选择多个点(每个图表总共约1500个点)和4个或更多的高图时,它会有一些严重的延迟。 这可能是因为我使用嵌套for循环,但我想知道是否有人提出了提高此代码效率的任何提示(或者甚至是这个问题)。第一个功能是Highcharts文档中提供的功能;第二个函数(updateCharts())是我做的那个。
我以前从未使用过高级图表,或者之前在javascript中进行了大量编程,所以我对这一切的工作方式还有点不熟悉。
function selectPointsByDrag(e) {
// Select points
Highcharts.each(this.series, function (series) {
Highcharts.each(series.points, function (point) {
if (point.x >= e.xAxis[0].min && point.x <= e.xAxis[0].max &&
point.y >= e.yAxis[0].min && point.y <= e.yAxis[0].max) {
point.select(true, true);
}
});
});
// Fire a custom event
Highcharts.fireEvent(this, 'selectedpoints', { points: this.getSelectedPoints() });
updateCharts(this);
return false; // Don't zoom
};
function updateCharts(curr_chart){
var count;
var counter;
var allChartArray = [chart, chart1, chart2, chart3];
var indexOfCurrentChart = allChartArray.indexOf(curr_chart);
if (indexOfCurrentChart > -1) {
allChartArray.splice(indexOfCurrentChart, 1);
};
bla = curr_chart.getSelectedPoints();
for(count = 0; count < allChartArray.length; count++){
for(counter = 0; counter < bla.length; counter++){
allChartArray[count].series[0].data[bla[counter].index].select(true, true)
};
};
};