Как я могу получить доступ к графику Highcharts через DOM-контейнер

Когда я рендерим диаграмму старшего чарта в контейнер div, как я могу получить доступ к объекту диаграммы через контейнер div? я не хочу делать переменную диаграммы глобальной.

        var chart = new Highcharts.Chart({
            chart: {
                renderTo: "testDivId",
                                ...

Я хочу получить доступ к диаграмме вне контекста выше, как это (псевдокод), для вызова функций:

var chart = Highcharts.Chart("testDivId"); //access from id
chart.redraw();

Ответы на вопрос(8)

var $chartCont = $('#container').highcharts({...}),
    chartObj = Highcharts.charts[$chartCont.data('highchartsChart')];

rt.

Это использует Highcharts 3.01

 alumi13 дек. 2017 г., 11:07
этот ответ должен быть принят

var obj=document.getElementById('#container')
Highcharts.charts[obj.getAttribute('data-highcharts-chart')];

... и с помощью коллеги ... лучший способ сделать это ...

getChartReferenceByClassName(className) {
    var foundChart = $('.' + className + '').eq(0).parent().highcharts();

    return foundChart;
}

let chartDom = document.getElementById("testDivId");
let chart = Highcharts.charts[Highcharts.attr(chartDom, 'data-highcharts-chart')]
var chart1; // globally available
$(document).ready(function() {
      chart1 = new Highcharts.Chart({
         chart: {
            renderTo: 'container',
            type: 'bar'
         },
         title: {
            text: 'Fruit Consumption'
         },
         xAxis: {
            categories: ['Apples', 'Bananas', 'Oranges']
         },
         yAxis: {
            title: {
               text: 'Fruit eaten'
            }
         },
         series: [{
            name: 'Jane',
            data: [1, 0, 4]
         }, {
            name: 'John',
            data: [5, 7, 3]
         }]
      });
   });

так что вы можете использовать для доступа к объекту de highchart не имеет значения, который является контейнером

chart1.redraw();

что яя использую Highcharts, которые встроены в платформу OutSystems, и я неУ меня нет способа контролировать, как создаются диаграммы.

Способ, который я нашел, был следующим:

Присвойте идентификационный класс диаграмме, используяclassName атрибут

chart: {
    className: 'LifeCycleMasterChart'
}

Определить вспомогательную функцию для получения диаграммы по имени класса}

function getChartReferenceByClassName(className) {
var cssClassName = className;
var foundChart = null;

$(Highcharts.charts).each(function(i,chart){    
    if(chart.container.classList.contains(cssClassName)){
     ,   foundChart = chart;
        return;
    }
});

return foundChart;

Используйте вспомогательную функцию там, где вам это нужно

var detailChart = getChartReferenceByClassName('LifeCycleDetailChart');

Надеюсь, это поможет вам!

Решение Вопроса
Highcharts 3.0.1

Пользователи могут использовать плагин Highcharts

var chart=$("#container").highcharts();
Highcharts 2.3.4

Читать изHighcharts.charts массив, для версии 2.3.4 и выше, индекс диаграммы можно найти по данным на

 var index=$("#container").data('highchartsChart');
 var chart=Highcharts.charts[index];
Все версии

Отслеживание диаграмм в глобальном объекте / карте по идентификатору контейнера

var window.charts={}; 
function foo(){
  new Highcharts.Chart({...},function(chart){  
      window.charts[chart.options.chart.renderTo] = chart;
  });
}

function bar(){
  var chart=window.charts["containerId"];
}

Режим чтения @ Highcharts Tips - Доступ к объекту диаграммы из идентификатора контейнера

Постскриптум

Некоторые дополнения были сделаны в более новых версиях Highcharts с момента написания этого ответа и былиНа основании ответов @davertron, @Moes и @Przy просьба высказать свои комментарии / ответы, поскольку они заслуживают доверия для этих. Добавление их сюда, поскольку этот принятый ответ был бы неполным без этих

 yaochiqkl01 июн. 2016 г., 14:27
Но это нене работает без JQuery
 davertron02 янв. 2013 г., 16:09
Похоже, что начиная с версии 2.3.4 Highcharts отслеживает все графики на странице:api.highcharts.com/highcharts#Highcharts
 tnkh26 сент. 2017 г., 06:43
Любой подобный метод, который я мог бы использовать для highstock?
 Jugal Thakkar02 янв. 2013 г., 18:18
@davertron спасибо за обновление ... это хорошая возможность, не так лиЯ думаю, много кода / усилий потребовалось, чтобы иметь это ...
 Shahar12 июл. 2017 г., 14:10
+1 за $ ("#контейнер").данные('highchartsChart») в качестве индекса высоких диаграмм. Это'очень полезно, спасибо!

вы можете сделать это

var chart = $("#testDivId").highcharts();

проверь пример на фиддлере

 Moes05 апр. 2016 г., 13:41
не уверен, почему это не такт работы для вас пример скрипта использует v4.2.3
 Moes05 апр. 2016 г., 14:10
Это's определенно возвращает объектjsfiddle.net/abbasmhd/86hLvc5s проверьте вывод консоли после нажатия кнопки
 David Torres05 апр. 2016 г., 12:07
Это нея не должен был использовать ответ @Frzy. Я использую версию 4.1.4
 David Torres05 апр. 2016 г., 14:53
Да, в jsfiddle этим занимаюсь, я согласен. Но не все работают одинаково, как вы можете видеть по 11 ответам @Frzy.
 David Torres05 апр. 2016 г., 13:56
Он возвращает элемент контейнера вместо диаграммы, и поэтому ответ @Frzy сработал. Также я нашел другое решение:$("#testDivId").highcharts({...}, function(chart) {...});

Ваш ответ на вопрос