Highcharts:第二次收集页面上的所有图表会产生错误
我的处境令人费解 我有一个页面,上面有几个柱状图。在此页面上,还有一个链接,单击该链接可生成表单并将数据发送到服务器,服务器将发送回PDF文档:Highcharts:第二次收集页面上的所有图表会产生错误,highcharts,Highcharts,我的处境令人费解 我有一个页面,上面有几个柱状图。在此页面上,还有一个链接,单击该链接可生成表单并将数据发送到服务器,服务器将发送回PDF文档: $('#my-link").click(function(ev) { var svgArray=[]; $(Highcharts.charts).each(function(i, chart){ svgArray.push(chart.getSVG()); <!--show err
$('#my-link").click(function(ev) {
var svgArray=[];
$(Highcharts.charts).each(function(i, chart){
svgArray.push(chart.getSVG()); <!--show error "TypeError: chart is undefined" in Firefox when clicking on it the second time without refreshing the page -->
});
var svgJson = JSON.stringify(svgArray);
var form = $('#my-form');
var ele = $('<input name="chartSvgArray" style="display: none" value="' + $.base64('encode', svgJson) + '">');
form.append(ele);
form.submit();
ev.preventDefault();
});
$(“#我的链接”)。单击(功能(ev){
var svgArray=[];
$(Highcharts.charts)。每个(函数(i,chart){
push(chart.getSVG());
});
var svgJson=JSON.stringify(svgArray);
变量形式=$(“#我的形式”);
变量ele=$('');
附加表格(ele);
表单提交();
ev.preventDefault();
});
浏览器能够从服务器获取PDF文档(其中包含图表),并提示我打开或保存它
这里是我遇到的问题。在不刷新页面的情况下,我再次单击链接,我在这一行中得到错误:
svgArray.push(chart.getSVG()); <!--show error "TypeError: chart is undefined" in Firefox when clicking on it the second time without refreshing the page -->
svgaray.push(chart.getSVG());
如果我刷新(重新加载)页面,那么每次生成文档都没有问题
有人能告诉我怎么解决这个问题吗
感谢并问候。问题在于,在
Highcharts.chart
数组中,您创建并销毁了所有图表。当您调用getSVG()
新建图表(重复)时已创建并将在该数组中可用。现在,一旦删除图表,它将替换为未定义的
,因此第一次导出后的结果可能是:
Highcharts.charts[] = [ chart1, chart2, undefined, undefined ];
解决方案很简单,只需检查图表
变量是否存在:
$(Highcharts.charts).each(function(i, chart){
if(chart) svgArray.push(chart.getSVG());
});
Pawel,谢谢你的输入!你的意思是,在第二次导出中,我仍然可以收集所有图表,但需要使用“如果测试”“跳过未定义的?新创建的图表是否按其在页面上的显示顺序放置在Highcharts.chart中?谢谢是的,该数组中的顺序与在页面上创建的顺序相同。是的,您需要使用
if(图表)代码>以确保您不会尝试导出非导出图表。或者可以使用if(图表)
而不是if(图表类型=='undefined')
。第二个应该更安全。