高图点击显示更大的图形
Highcharts on click show larger graph
我正在设置一种方法,可以通过取消隐藏页面'overlay'div并在其中创建一个次要的,更大的图表,与点击的图表相同的数据来放大我的网页上的小图表。
function DrawSmallChart() {
chart_data = [1, 2, 3, 4, 5];
LargeChartOptions = {
series: [{
name: 'Data',
data: chart_data
}],
};
SmallChartOptions = {
series: [{
name: 'Data',
data: chart_data
}],
events: {
click = function (e) { DrawLargeChart(LargeChartOptions); }
}
};
$('#smallchart-div-container').highcharts(SmallChartOptions);
}
function DrawLargeChart(options) {
chart_container_div = document.getElementById("graph-div-id");
chart_container_div.style.display = ""
$('#graph-div-id').off();
$("#graph-overlay-graph").highcharts('StockChart', options);
}
我有另一个函数,当我点击一个按钮时隐藏这个div。
当页面加载时,我第一次点击小图形,显示了包含所有数据的大图形。当我第二次点击它时,图形显示了,但没有数据。
我已经用调试器浏览了一下发生了什么,我已经确切地找到了问题所在,但我不知道如何解决它。
第一次点击图形时,DrawLargeChart
函数被options.series = <Array containing my series object with chart_data>
调用。第二次,DrawLargeChart
被options.series = null
调用。
当我刷新页面时,它是相同的-第一次点击工作,随后的点击不。我怀疑这与chart_data
变量有关…
如有任何帮助,不胜感激
<标题>编辑1:经过更多的调试,很明显,传递给DrawLargeChart()
的options
对象在第一次点击和随后的点击中是不一样的。我的代码中没有任何东西改变LargeChartOptions
结构
我发现这是一个按值传递/按引用传递错误。LargeChartOptions
是通过引用传入的,在第一次单击后不再存在。有没有一种方法可以按值传递它?我不想在函数参数中输入LargeChartOptions
(比我在这里输入的大得多),以防将来我改变任何东西
编辑3//我想明白了:
我知道问题出在哪里了。$(target).highcharts(options)
函数实际上修改 options对象并设置options.series = null
<标题> 的解决方案我修改了DrawLargeChart
函数,通过使用options_buffer = $.extend(true,{},options);
来创建options
的本地副本。
function DrawLargeChart(options) {
chart_container_div = document.getElementById("graph-div-id");
options_buffer = $(target).highcharts(options);
chart_container_div.style.display = ""
$('#graph-div-id').off();
$("#graph-overlay-graph").highcharts('StockChart', options_buffer);
}
通过创建options_buffer
, highcharts函数不能修改LargeChartOptions
(因为options
只是对该变量的引用- yay Javascript)
我找到了答案(在原来的帖子,但复制在这里):
我修改了DrawLargeChart
函数,通过使用options_buffer = $.extend(true,{},options);
function DrawLargeChart(options) {
chart_container_div = document.getElementById("graph-div-id");
options_buffer = $(target).highcharts(options);
chart_container_div.style.display = ""
$('#graph-div-id').off();
$("#graph-overlay-graph").highcharts('StockChart', options_buffer);
}
通过创建options_buffer
, highcharts函数不能修改LargeChartOptions
(因为options
只是对该变量的引用- yay Javascript)
- Facebook:当发布期望对象引用时显示打开的图形对话框
- 没有使用Highcharts显示任何图形
- 在同一库存面板(amCharts)中显示不同的图形
- 我可以在HTML5画布中创建图形形状对象吗?以及当用户将鼠标悬停在形状上时如何将光标显示为指针
- 如何解析键盘字符并显示其等效图形
- 使用数据库中的两个变量在jqplot中显示图形
- 高图表错误 #15,图形显示正确
- 细胞景观:加载页面时不显示图形
- 如何用图形填充流星集合并单独显示它们
- JavaScript sigma.js图形未显示在Internet Explorer 8中
- Javascript 滑块未显示和图形提示
- 显示图形
- Cytoscape.js,图形未以正确的设置显示
- 将水平线添加到 d3 图形以错误的值显示
- Kanga建模和显示图形失败
- 显示图形点的平均值,随着用户缩放而动态修正
- AmChart股票图表未显示不同的图形
- 使用flot的图形显示问题
- 使用json_encode进行Google图形显示
- 使图形显示水平使用jqBarGraph