8

私はあなたが私を助けてくれることを願っている奇妙な問題を抱えています。

開発用WebサイトでHighchartsを実行しています。単純なフォームを使用して、ユーザーがデータを入力できるようにしています。

同じページに、データが入力されるとHighchartが表示されます。

データ入力フォームには、非常に単純なjQueryベースのスニペットがあります。フォームの検証、最大文字数のカウンターなど。

データベースにグラフデータがある場合、グラフは正しくプロットされ、新しいデータポイントを入力しようとすると、残りのJSスニペットは期待どおりに機能します。

ただし、データベースにデータがない場合(したがって、Highchartは表示されません)、すべてのJSスニペットが機能しなくなります。

Firebugコンソールで、グラフを作成するデータがない場合、次のエラーが発生します。

jb is null
function n(m,h){kc=ya(a.title,m);tc=ya...play:""});Aa.body.appendChild(Qb)}Tc=
highcharts.js (line 47)

Chromeでは、別のエラーが次のように表示されます

Uncaught TypeError: Cannot set property 'innerHTML' of null
d.d.extend._Deferred.f.resolveWith         jquery.min.js:16
d.d.extend.ready                           jquery.min.js:16
d.c.addEventListener.A

繰り返しますが、これらのエラーは、最初のデータポイントに入るとすぐに消え、グラフが作成されます。

Highchartが空のときに、何が起こっているのか、JSを機能させる方法を知っている人はいますか?

どんなポインタでも大歓迎です。ありがとう!

4

3 に答える 3

8

私にとっての問題は、HighChartsを含める前にjQueryを含めていなかったことです。

<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/highcharts-more.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

エラーをスローしました:

Uncaught TypeError:undefined(anonymous function)@ highcharts.js:313(anonymous function)@ highcharts.js:315(anonymous function)@ highcharts.js:331のプロパティ'addEvent'を読み取れません

Uncaught TypeError:n.getOptionsは関数ではありません(匿名関数)@ highcharts-more.js:8(匿名関数)@ highcharts-more.js:55

Uncaught TypeError:undefined(anonymous function)@ exporting.js:9(anonymous function)@ export.js:24のプロパティ'fireEvent'を読み取れません

しかし、最初にjQueryを含めた場合、含まれていませんでした。

于 2015-10-23T01:29:59.603 に答える
7

私はこの問題を抱えていました。highChart作成コードをdocument.readyで囲む必要がありました

$(document).ready({
   chart = new Highcharts.Chart({ //my cool chart 
   });
});
于 2011-06-02T23:24:01.627 に答える
2

OK、このエラーが再び表示されました。これは、上記のコメントでは実際には解決されなかったためです。

原因は次のとおりです。チャートのデータを生成するモデルがたまたま空の配列を返す場合(たとえば、新しいユーザーであり、データベースにまだデータを追加していない場合)、この空の配列はコントローラーに渡されます-次に、空の配列をHighchartsを使用してビューに渡します。

Highchartsを含むビューに空の配列を渡すと、Highchartsは実行されます#containerが、データがない場合に削除されるビューの条件があったため、グラフを挿入する要素が見つかりませんでした。

チャートを配置する場所がないと、HighchartsはinnerHTMLエラーを返します。これは、残りのjavascriptを壊す場合と壊さない場合があります(私の場合)。

ここでの解決策はJSとは何の関係もありませんでしたが、実際には、擬似コードになる条件をコントローラーに設定することと関係がありました。

if model that generates chart data returns empty array
    don't generate view containing Highcharts
else
    generate view containing Highcharts

これを行うことで、エラーを完全に防ぐだけでなく、データが存在しない場合にHighchartsを実行するオーバーヘッドを削減しました。

于 2011-11-15T02:03:07.527 に答える