Javascript highstocks-图例位置并在多个图表的鼠标移动中刷新图例值

Javascript highstocks-图例位置并在多个图表的鼠标移动中刷新图例值,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,下面是一个场景。我有多个高股价,比如说一页10张图表。目前,我已经编写了500行代码来定位图例、显示工具提示和刷新mousemove上的图例值 图例的数量因图表而异On mousemove更新所有图例的值。我需要优化我正在使用的代码highstocksv1.2.2 上面的屏幕截图显示了2个图表返回,篮子,与篮子排列是图例,其值在每次鼠标移动时都会更新 请找到。在我的例子中,图例是用数百行代码在鼠标移动时定位和更新的值当我移动鼠标时,第一张图表的Return和Basket的图例值以及vs Bask

下面是一个场景。我有多个高股价,比如说一页10张图表。目前,我已经编写了500行代码来定位图例、显示工具提示和刷新mousemove上的图例值

图例的数量因图表而异On mousemove更新所有图例的值。我需要优化我正在使用的代码
highstocks
v1.2.2

上面的屏幕截图显示了2个图表<代码>返回,
篮子
与篮子排列
是图例,其值在每次鼠标移动时都会更新

请找到。在我的例子中,图例是用数百行代码在鼠标移动时定位和更新的值当我移动鼠标时,第一张图表的
Return
Basket
的图例值以及
vs Basket Spread
的图例值都会更新。它工作得很好,但是有很多
javascript
代码。因此,我需要用更少的代码或highstocks内置功能对其进行优化。

更新

用户@wergeld已发布。正如我在屏幕截图中所示,当十字线在任何图表上移动时,所有图表的图例值都应该更新

是否可以用更少的代码实现相同的功能,或者在
highstocks中是否有内置功能?


使用。

基本示例是使用以下方法:

这是假设我将
  • 修改为:

            $('<li>')
                .css('color', serie.color)
                .text(serie.name + ': NA')
                .click(function () {
                toggleSeries(i);
            })
                .appendTo($legend);
    

    那么,你是如何将我假设的y值附加到图例中的呢?谢谢你的回答。在我的例子中,当我在任何图表上移动鼠标时,我需要更新所有图表的图例。这就像是在窗格上移动鼠标。好的,将这段代码扩展到所有这些图表。为每个图表创建了一个外部图例。将鼠标盖添加到每个图表中,以更新正确的图例。我认为您想要的是捕获xAxis索引(假设所有图表对给定索引使用相同的类别/时间),然后使用该xAxis索引的值更新每个图表的图例文本。同样,使用此代码是可行的。您可以通过
    此索引获得该点的索引。该索引使用编辑中引用的OHLC图表更新了答案。
    
            $('<li>')
                .css('color', serie.color)
                .text(serie.name + ': NA')
                .click(function () {
                toggleSeries(i);
            })
                .appendTo($legend);
    
        plotOptions: {
            series: {
                point: {
                    events: {
                        mouseOver: function () {
                            //using the ohlc and volumn data sets created at runtime.
                            var stockVal = ohlc[this.index][4]; // show close value
                            var stockVolume = volume[this.index][1];
                            var theChart = $('#container').highcharts();
                            var theLegendList = $('#legend');
                            $('li', theLegendList).each(function (l) {
                                var legendTitle = theChart.series[l].name;
                                if (l === 0) {
                                    this.innerText = legendTitle + ': ' + stockVal;
                                }
                                if (l === 1) {
                                    this.innerText = legendTitle + ': ' + stockVolume;
                                }
                            });
                        }
                    }
                }
            }
        }