質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

739閲覧

JSのundefinedではなく、値を表示したいです。

toyamal

総合スコア28

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/01 05:32

前提・実現したいこと

JavaScriptで開発をしているのですが、
ある場所では値が反映されているのに対して、ある場所ではundefinedになってしまいます。
こちらをundefinedから値が反映されるようにしたいです。

変数名:thresです。

発生している問題・エラーメッセージ

値が反映されずundefinedになってしまう。

該当のソースコード

JS

1 // Load the Visualization API and the controls package. 2 google.charts.load('current', { 'packages': ['corechart', 'controls'] }); 3 google.setOnLoadCallback(drawDashboard); 4 let chart; 5 let thres; 6 let scale = []; 7 8 function drawDashboard() { 9 let dataArray = [['breaks','count']]; 10 let df = $.Deferred(); 11 12 13 $('#search').click(function() { 14 $.ajax({ 15 data: 'post', 16 url: "http://localhost:3000/result/" + $('#zip').val(), 17 dataType : 'json', 18 }).done(function(data){ 19 console.log("success"); 20 //Jsonデータのbreaks,countをGoogleChartのデータ配列に格納 21 let data_item = data.count.map((c, i) => { 22 return [data.breaks[i].toString(), c]; 23 }); 24 dataArray.push(...data_item); 25 console.log(dataArray); 26 df.resolve(); 27 //Jsonデータを各項目に反映 28 $('#view_code').val(data.view_code); 29 $('#view_code_url').val(data.view_code_url); 30 $('#name').val(data.name); 31 if(data.gender == 0){ 32 $('#gender').val("不明"); 33 }else if(data.gender == 1){ 34 $('#gender').val("男"); 35 }else if(data.gender == 2){ 36 $('#gender').val("女"); 37 } 38 $('#category').val(data.category); 39 $('#num').val(data.num); 40 $('#data_num').val(data.data_num); 41 $('#data_type').val(data.data_type); 42 $('#unit').val(data.unit); 43 $('#illness').val(data.illness); 44 thres = data.thres; 45 scale = data.scale; 46 console.log(thres);//こちらではきちんとthresの値が反映されています。------------ 47 }).fail(function(){ 48 console.log("error"); 49 }); 50 51 52 }); 53 54 55 df.promise().done(function(){ 56 let chartdata = google.visualization.arrayToDataTable(dataArray); 57 console.log(thres);//こちらではthresの値がundefinedになる。------------ 58 // Create a dashboard. 59 let dashboard = new google.visualization.Dashboard( 60 document.getElementById('dashboard_div')); 61 62 // Create a range slider, passing some options 63 var donutRangeSlider = new google.visualization.ControlWrapper({ 64 'controlType': 'NumberRangeFilter', 65 'containerId': 'filter_div', 66 'options': { 67 'filterColumnLabel': 'count' 68 } 69 }); 70 71 // Create a pie chart, passing some options 72 let Histogram= new google.visualization.ChartWrapper({ 73 'chartType': 'Histogram', 74 'containerId': 'chart_div', 75 'options': { 76 'width': 900, 77 'height': 600, 78 'pieSliceText': 'value', 79 'legend': 'right', 80 'histogram': { 81 hideBucketItems: true, 82 bucketSize: 10 83 }, 84 'bar': { groupWidth: "100%" }, 85 'colors': ['gray'] 86 }, 87 88 }); 89 dashboard.bind(donutRangeSlider, Histogram); 90 91 dashboard.draw(dataArray); 92 console.log(filter_div.value); 93 changeOptions = function () { 94 Histogram.setOption('histogram.bucketSize', document.getElementById('example').value); 95 dashboard.draw(dataArray); 96 }; 97 98 }); 99 100 } 101

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

js

1 df.resolve(); 2 ... 3 thres = data.thres; 4 scale = data.scale; 5 console.log(thres);

df.resolve()thres = data.thres より後に呼べば良いのではないでしょうか。

投稿2021/04/01 05:39

int32_t

総合スコア21008

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyamal

2021/04/01 05:49

ありがとうございます! 無事、値を反映することが出来ました!
guest

0

処理的にはjQueryですかね?
$.ajaxのdone内でグローバル変数に返したタイミングより、undefinedを返すコンソールで
参照するタイミングのほうが前なのでは?

$.ajaxをまって処理するなら$.whenなどの時系列処理が必要です

投稿2021/04/01 05:41

yambejp

総合スコア115010

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyamal

2021/04/01 05:50

ありがとうございます! 無事解決することが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問