Ich habe ein seltsames Problem, bei dem ich hoffe, dass du mir helfen kannst.
Ich habe Highcharts auf einer Dev-Website ausgeführt - ich verwende ein einfaches Formular, um dem Benutzer die Eingabe von Daten zu ermöglichen.
>Auf derselben Seite wird ein Highchart angezeigt, sobald Daten eingegeben wurden.
Das Dateneingabeformular enthält sehr einfache jQuery-basierte Snippets, z. Formularvalidierung, ein Zähler für die maximale Anzahl von Zeichen, etc.
Wenn in der Datenbank Diagrammdaten vorhanden sind, wird das Diagramm korrekt dargestellt, und die verbleibenden JS-Schnipsel funktionieren wie erwartet, wenn Sie versuchen, neue Datenpunkte einzugeben.
Wenn jedoch keine Daten in der Datenbank vorhanden sind (daher wird kein Highchart angezeigt), funktionieren alle meine JS-Snippets nicht mehr.
Auf der Firebug-Konsole erhalte ich diesen Fehler, wenn keine Daten zum Erstellen eines Diagramms vorhanden sind:
%Vor%In Chrome wird ein anderer Fehler als
angezeigt %Vor%Diese Fehler verschwinden wieder, sobald ich den ersten Datenpunkt betrete und ein Diagramm erstellt wurde.
Weiß jemand, was passiert und wie ich meinen JS zum Laufen bringen kann, wenn ein Highchart leer ist?
Alle Hinweise werden sehr geschätzt. Danke!
OK, dieser Fehler ist wieder aufgetaucht, und das liegt daran, dass mein Kommentar das Problem nicht wirklich gelöst hat.
Hier ist der Täter: Wenn Sie ein Modell haben, das Daten für Diagramme erzeugt, geben Sie ein leeres Array zurück (sagen wir, es ist ein neuer Benutzer und hat noch keine Daten zur Datenbank hinzugefügt), dieses leere Array wird an die übergeben Controller - der dann das leere Array mit Highcharts an die Ansicht übergibt.
Beim Übergeben eines leeren Arrays an meine Ansicht mit Highcharts würden Highcharts ausgeführt, würde aber kein Element zum Einfügen des Diagramms finden, da ich auch eine Bedingung in der Ansicht hatte, die #container
entfernt hat, wenn keine Daten vorhanden waren.
Ohne Angabe des Diagramms gibt Highcharts einen innerHTML
-Fehler zurück, der Ihr verbleibendes Javascript (oder meinen Fall) möglicherweise unterbricht.
Die Lösung hier hatte nichts mit JS zu tun, sondern mit einer Bedingung in meinem Controller, die in Pseudocode wäre:
%Vor%Dadurch habe ich nicht nur den Fehler dauerhaft verhindert, sondern auch den Aufwand für die Ausführung von Highcharts reduziert, wenn keine Daten vorhanden sind.
Für mich bestand das Problem darin, dass ich jQuery nicht einbezog, bevor ich HighCharts einfügte.
%Vor%Warf die Fehler:
Uncaught Typeerror: kann Eigenschaft 'addEvent' undefinierter (anonymer Funktion) @ highcharts.js lesen: 313 (anonyme Funktion) @ highcharts.js: 315 (anonyme Funktion) @ highcharts.js: 331
Uncaught TypeError: n.getOptions ist keine Funktion (anonyme Funktion) @ highcharts-more.js: 8 (anonyme Funktion) @ highcharts-more.js: 55
Uncaught TypeError: Die Eigenschaft 'fireEvent' von undefined (anonyme Funktion) kann nicht gelesen werden @ exporting.js: 9 (anonyme Funktion) @ exporting.js: 24
Aber wenn ich jQuery zuerst einfügte, tat es das nicht.
Tags und Links javascript jquery highcharts