Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Highcharts:无法读取属性';图表';未定义的_Javascript_Jquery_Charts_Highcharts - Fatal编程技术网

Javascript Highcharts:无法读取属性';图表';未定义的

Javascript Highcharts:无法读取属性';图表';未定义的,javascript,jquery,charts,highcharts,Javascript,Jquery,Charts,Highcharts,所以我建立了这个图表,它可以工作,除了它不断抛出错误,无法读取未定义的属性“chart”。我在调整窗口大小时重新加载图表,以便html标签重新加载到正确的位置 这是一个双圆环图,根据选定的切片显示/隐藏内容 任何帮助都将不胜感激。首先,您在createChart函数中定义var chart变量,因此它始终是未定义的-仅使用一个定义(顶部的定义),然后将图表分配给该变量。无论如何,我看到两种解决方案: 在resize事件中使用setTimeout(),以延迟呈现图表。这不是一个可靠的解决方案,因

所以我建立了这个图表,它可以工作,除了它不断抛出错误,无法读取未定义的属性“chart”。我在调整窗口大小时重新加载图表,以便html标签重新加载到正确的位置

这是一个双圆环图,根据选定的切片显示/隐藏内容


任何帮助都将不胜感激。

首先,您在
createChart
函数中定义
var chart
变量,因此它始终是未定义的-仅使用一个定义(顶部的定义),然后将图表分配给该变量。无论如何,我看到两种解决方案:

  • resize
    事件中使用
    setTimeout()
    ,以延迟呈现图表。这不是一个可靠的解决方案,因为用户可以随意调整浏览器的宽度,而某些东西可能会再次损坏

  • wrap
    initReflow
    方法检查图表是否存在,如下所示:

    (function(H, HA) {
      H.wrap(H.Chart.prototype.initReflow = function () {
        var chart = this,
            reflow = function (e) {
                if(chart && chart.options) {
                    chart.reflow(e);
                }
            };
    
    
        HA.addEvent(window, 'resize', reflow);
        HA.addEvent(chart, 'destroy', function () {
            HA.removeEvent(window, 'resize', reflow);
        });
      });
    })(Highcharts, HighchartsAdapter)
    
工作演示:

编辑:
由于Highcharts 4.1.10 Highcharts适配器是内置的,因此请将其删除并使用Highcharts:

您可以尝试修改options.chart.renderTo,类似这样的
renderTo:$(“#图表容器”)
。并检查div#charts容器是否为uniq。感谢您的快速回复,但不起作用。它发回了未捕获的TypeError:a.setAttribute不是函数哦,对不起,我错过了问题的关键
addClass(“currentItem”,1000,回调(目标))
您在这里做什么
addClass
有一个参数,它是字符串或函数。在这种情况下,将立即调用回调函数。此外,您的回调没有传入参数。我已更正回调参数问题。调整窗口大小时出错。所以图表在调整大小时未定义?尽管它调用的函数与加载时使用的函数相同?D.reflow@highcharts.js?ver=1:213 D.initReflow.b@highcharts.js?ver=1:213 m.event.dispatch@jquery.js?ver=1.11.3:1 m.event.add.r.handle@jquery.js?ver=1.11.3:1谢谢。我还收到了另一个答案,也解决了这个问题。添加回流:false也解决了这个问题。这两者之间有很大区别吗?图表:{reflow:false,…实际上,
图表。reflow
可能是更好的解决方案,因为它更容易设置。结果应该是一样的:在窗口调整大小事件中禁用图表调整大小。因此,此解决方案似乎不再工作。它现在抛出一个错误Highcharts适配器未定义。知道为什么会发生这种情况吗?编辑答案-这是由4.1.10中的Highcharts的更改引起的。工作正常!再次感谢!