当我渲染highcharts,图表,一个div容器,我怎么能得到通过DIV容器访问图表对象? 我不想使图表变量全球。
var chart = new Highcharts.Chart({
chart: {
renderTo: "testDivId",
...
我要访问的图表上下文之外上述这样的(伪代码),调用的功能:
var chart = Highcharts.Chart("testDivId"); //access from id
chart.redraw();
Highcharts 3.0.1
用户可以使用highcharts插件
var chart=$("#container").highcharts();
Highcharts 2.3.4
从读Highcharts.charts阵列,用于2.3.4版或更高版本,图表的索引可以从数据上所找到<div>
var index=$("#container").data('highchartsChart');
var chart=Highcharts.charts[index];
所有版本
在一个全局对象/地图轨迹图由容器的id
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提示-访问图表对象从容器ID
PS
有些添加剂在Highcharts的新版本,因为写这个答案作了并且从@davertron,@Moes和@Przy答案已经采取了,请给予好评他们的意见/答案,因为他们应有的荣誉这些。 在这里添加它们,因为这接受的答案是没有这些不完整
你可以这样做
var chart = $("#testDivId").highcharts();
检查提琴手例子
var $chartCont = $('#container').highcharts({...}),
chartObj = Highcharts.charts[$chartCont.data('highchartsChart')];
chartCont是jQuery对象。 chartObj是Highchart图表对象。
这是使用Highcharts 3.01
我发现,这样做的另一种方式...主要是因为我使用的是嵌入在OutSystems平台Highcharts,我没有办法控制的创建图表的方式。
我发现这个方法是如下:
给一个标识类使用图表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');
希望它可以帮助你!
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]
}]
});
});
该变种chart1是全球性的,所以你可以用它来访问德highchart对象并不重要至极的容器
chart1.redraw();
...并与同事...一个更好的方式来做到这一点是的帮助...
getChartReferenceByClassName(className) {
var foundChart = $('.' + className + '').eq(0).parent().highcharts();
return foundChart;
}
如果没有的jQuery(香草JS):
let chartDom = document.getElementById("testDivId");
let chart = Highcharts.charts[Highcharts.attr(chartDom, 'data-highcharts-chart')]