Highcharts: Cannot read property 'chart' undefined
So habe ich dieses Diagramm erstellt und es funktioniert, außer es hält, werfen Sie den Fehler Cannot read property 'chart' undefined. Ich bin ein Neuladen der Grafik auf " Fenster verkleinern, so dass die html-labels laden in den korrekten Positionen.
Es ist eine Doppel-donut-Diagramm und zeigt/verbirgt die Inhalte basierend auf der ausgewählten Scheibe.
Jegliche Hilfe würde sehr geschätzt werden.
- Sie können versuchen, ändern Sie die Optionen.chart.renderTo, so etwas wie dieses
renderTo: $('#charts-container')
. Und check div#charts-container ist uniq. - vielen Dank für die schnelle Antwort, aber funktioniert nicht. es sendet wieder Uncaught TypeError: ein.setAttribute keine Funktion
- Oh, sorry, ich verpasste den Punkt des Problems.
addClass("currentItem", 1000, callback(target))
was Sie hier tun?addClass
hat einen parameter und es ist string oder eine Funktion. Und die callback-Funktion wird aufgerufen werden, in diesem Fall unverzüglich. Auch der callback hat keine eingehenden Parameter - Korrigiert habe ich die callback-parameter-Problem. Der Fehler tritt auf Fenster Größe ändern. So Karte ist undefiniert, wenn es verändert? Obwohl Sie den Aufruf der gleichen Funktion, die es verwendet, wenn es geladen wird?
- D. reflow @ highcharts.js?ver=1:213 D. initReflow.b @ highcharts.js?ver=1:213 m.event.Versand @ jquery.js?ver=1.11.3:1 m.event.hinzufügen.r.handle @ jquery.js?ver=1.11.3:1
- Versuchen Sie, um Diagramm-variable global und fügen Sie diese Zeile
if(chart) chart.destroy();
bevor Sie erneut initialisiert es. Wenn Sie jsfiddle dieses, bin ich sicher, dass ich kann Ihnen helfen, mehr leicht. - Was ist der Grund für die Schaffung neuer chart jedes mal, wenn Sie die Größe ändern?
- Bochan bin ich mit "useHTML" für die datalabels. Sie reagieren müssen auf die responsive css, so fand ich, dass ein Neuladen der Grafik auf die Größe erledigt das Ziel.
- krivstov - jsfiddle.net/dpsn9gx8/3, ich habe versucht, das hinzufügen if (chart)...aber diese Aussage ist niemals wahr, so dass es nicht zerstören.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst definieren Sie
var chart
variable increateChart
- Funktion, so dass es immer undefiniert - verwenden Sie nur eine definition (die oben), später noch genau zuordnen, Diagramm, dass eine variable. Trotzdem sehe ich zwei Lösungen:verwenden
setTimeout()
imresize
Ereignis zu machen-Diagramm mit einer Verzögerung. Nicht eine zuverlässige Lösung, da die Benutzer können spielen, um mit der Breite des Browsers und eventuell etwas wieder kaputtwrap
initReflow
Methode zu überprüfen, ob Grafik existiert, wie diese:Arbeiten demo: https://jsfiddle.net/dpsn9gx8/7/
Edit:
Da Highcharts 4.1.10 Highcharts-adapter ist integriert, so entfernen Sie Sie und verwenden Sie Highcharts: https://jsfiddle.net/dpsn9gx8/11/
chart.reflow
möglicherweise die bessere Lösung, da es einfacher einzurichten. Das Ergebnis sollte das gleiche: Behinderte Diagramm-Größe ändern-auf-Fenster-resize-Ereignis.