Highcharts:第二次收集页面上的所有图表会产生错误

Highcharts:第二次收集页面上的所有图表会产生错误,highcharts,Highcharts,我的处境令人费解 我有一个页面,上面有几个柱状图。在此页面上,还有一个链接,单击该链接可生成表单并将数据发送到服务器,服务器将发送回PDF文档: $('#my-link").click(function(ev) { var svgArray=[]; $(Highcharts.charts).each(function(i, chart){ svgArray.push(chart.getSVG()); <!--show err

我的处境令人费解

我有一个页面,上面有几个柱状图。在此页面上,还有一个链接,单击该链接可生成表单并将数据发送到服务器,服务器将发送回PDF文档:

$('#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')
。第二个应该更安全。