Wie kann ich beim Rendern eines Highcharts-Diagramms in einen Div-Container über den Div-Container auf das Diagrammobjekt zugreifen? Ich möchte die Diagrammvariable nicht global machen.
var chart = new Highcharts.Chart({
chart: {
renderTo: "testDivId",
...
Ich möchte auf das Diagramm außerhalb des obigen Kontexts wie folgt zugreifen (Pseudocode), um Funktionen aufzurufen:
var chart = Highcharts.Chart("testDivId"); //access from id
chart.redraw();
quelle
du kannst das
Beispiel auf Geiger überprüfen
quelle
$("#testDivId").highcharts({...}, function(chart) {...});
chartCont ist ein jQuery-Objekt. chartObj ist ein Highchart-Diagrammobjekt.
Dies verwendet Highcharts 3.01
quelle
Ich habe einen anderen Weg gefunden ... hauptsächlich, weil ich Highcharts verwende, die in OutSystems Platform eingebettet sind, und ich keine Möglichkeit habe, die Art und Weise zu steuern, wie Diagramme erstellt werden.
Der Weg, den ich fand, war der folgende:
Geben Sie dem Diagramm mithilfe eines
className
Attributs eine identifizierende KlasseDefinieren Sie eine Hilfsfunktion, um das Diagramm nach Klassennamen abzurufen
}}
Verwenden Sie die Zusatzfunktion überall dort, wo Sie sie benötigen
Hoffe es hilft dir!
quelle
Einfach mit reinem JS:
quelle
Das var chart1 ist global, sodass Sie auf das Highchart-Objekt zugreifen können, unabhängig davon, um welchen Container es sich handelt
quelle
Ohne jQuery (Vanille js):
quelle
... und mit Hilfe eines Kollegen ... ist es besser, ...
quelle
Die Antwort von @elo ist richtig und positiv, obwohl ich sie ein wenig aufräumen musste, um es klarer zu machen:
myChart
wird dann zu einem Live- Highcharts- Objekt, das alle aktuellen Requisiten in dem Diagramm anzeigt , das in der Tabelle gerendert wurdemyChartEl
. DamyChart
es sich um ein Highcharts- Objekt handelt, kann man Prototypmethoden direkt danach verketten , erweitern oder darauf verweisen.Man kann auch erhalten
myChart
durch.highcharts()
, das ist einjQuery
Plug -in :Der obige
jQuery
Plugin- Ansatz mussjQuery
geladen werden, bevor das Plugin verwendet wird, und natürlich das Plugin selbst. Es war das Fehlen dieses Plugins, das mich dazu brachte, nach alternativen Möglichkeiten zu suchen, um dasselbe mit reinem Vanille-JavaScript zu erreichen.Mit dem reinen JS-Ansatz konnte ich das tun, was ich brauchte (das zweite Code-Snippet), ohne mich auf Folgendes verlassen zu müssen
jQuery
:quelle