前提・実現したいこと
GoogleChartを使って開発をしているのですが、If文で表示するグラフの種類を分けたいです。
If文を入れてみたところグラフが表示されないです。コンソール上にはエラーは出ておりません。
発生している問題・エラーメッセージ
グラフが表示されない。
該当のソースコード
<!doctype html> <html> <head> <meta charset="utf-8" content=""> <title>google-chart</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <!-- スクリプト部分 --> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); let chart; let thres; function drawChart() { var dataArray = [['breaks','count']]; var df = $.Deferred(); $('#search').click(function() { $.ajax({ data: 'post', url: "http://localhost:3000/result/" + $('#zip').val(), dataType : 'json', }).done(function(data){ console.log("success"); var data_item = data.count.map((c, i) => { return [data.breaks[i].toString(), c]; }); dataArray.push(...data_item); console.log(dataArray); df.resolve(); thres = data.thres; console.log(thres); $(data).each(function(){ }); }).fail(function(){ console.log("error"); }); }); df.done(function(){ var chartdata = google.visualization.arrayToDataTable(dataArray); //If文の場所がこちらになります。------------------------------------------------- if(thres == 1){ var options = { width: 900, height: 600, pieSliceText: 'value', legend: 'right', histogram: { hideBucketItems: true, bucketSize: 10 }, bar: { groupWidth: "100%" }, colors: ['gray'] }; chart = new google.visualization.Histogram(document.getElementById('chart_div')); chart.draw(chartdata, options); }else if(thres == 2){ chart = new google.charts.Bar(document.getElementById('chart_div')); }else if(thres == 4){ chart = new google.visualization.PieChart(document.getElementById('chart_div')); }else if(thres == 9){ chart = new google.visualization.Histogram(document.getElementById('chart_div')); } }); } </script> </head> <!-- HTML部分 --> <body> <div> <label for="zip">項目コードを入力:</label><br /> <input id="zip" type="text" size="10" /> <input id="search" type="button" value="検索" /> </div> <h1>jsonファイルから表示</h1> <div id="chart_div" style="width: 900px; height: 500px;"></div> </body> </html>
試したこと
if文を実際に入れてみましたが、グラフが表示されません。。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
以下2点デバッグで確認するといかがでしょうか。
・$('#search').click 処理とグラフ表示処理の同期ができているか
→ ajax 処理の後に if分岐処理を行っているかどうかをconsole.logもしくはBreakポイントおいて確認
・if(thres == 1) が true かどうか
→ そもそもグラフ表示処理を通る処理になっているのか
確認しましたところ、
if(thres == 1)が先に処理されたあと、$('#search').click 処理がされておりました。
$('#search').click 処理を先に行いたい場合はどうすればよろしいでしょうか?
回答に記載しました。
こちら試していただいた上、問題がありましたら試したデバッグを含めて回答にコメントお願いいたします。
回答1件
あなたの回答
tips
プレビュー