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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2958閲覧

文字列をjqplotで使用する変数に変換したい

sunagimochan

総合スコア12

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2016/09/02 08:40

編集2016/09/02 15:44

###実現したいこと

  • jqplotを使用してグラフを描画したい
  • 凡例クリックではなくチェックボックスによって表示するグラフを切り替えたい
  • チェックボックスの状態を取得して配列に格納し、それをそのままjqplotの系列データとして使用したい

###該当のソースコード

html

1<input type="checkbox" value="cat">2<input type="checkbox" value="dog">3<input type="checkbox" value="pan">パンダ 4<input type="checkbox" value="rab">うさぎ 5<div id="graph"></div>

javascript

1var cat = [403, 332, 385, 367]; 2var dog = [528, 355, 415, 452]; 3var pan = [220, 407, 131, 274]; 4var rab = [254, 260, 329, 323]; 5$(function() { 6 $('[type=checkbox]:checked').each(function() { 7 category.push($(this).val()); 8 }); 9}); 10$.jqplot('graph', category);

categoryに格納された内容、たとえば["cat","dog","rab"]だったとしたら
これを[cat,dog,rab]として使用したく、if文で全選択パターンを列記して動かしている状態です。

javascript

1if(category === "cat","dog","rab") { 2 category = [cat,dog,rab]; 3} 4if(category === "cat","dog","pan","rab") { 5 category = [cat,dog,pan,rab]; 6}

もっとスマートに実現する方法はありますでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

・数値データを連想配列にまとめる
・チェックされた要素をmap処理してグラフ用データを作成

でやってみました。何か参考になる点があれば幸いです。

動作サンプル
https://jsfiddle.net/1jnLLoLb/2/

html

1<label><input type="checkbox" value="cat"></label> 2<label><input type="checkbox" value="dog"></label> 3<label><input type="checkbox" value="pan">パンダ</label> 4<label><input type="checkbox" value="rab">うさぎ</label> 5<div id="graph"></div>

javascript

1var values = { 2 cat: [403, 332, 385, 367], 3 dog: [528, 355, 415, 452], 4 pan: [220, 407, 131, 274], 5 rab: [254, 260, 329, 323] 6}; 7 8$('[type=checkbox]').click(function() { 9 var checkboxes = $('[type=checkbox]:checked'); 10 $('#graph').html(''); 11 12 if (! checkboxes.length) { 13 return; 14 } 15 16 var data = checkboxes.map(function() { 17 var animal = $(this).val(); 18 return [values[animal]]; 19 }).get(); 20 $.jqplot('graph', data); 21});

参考

jQuery.map(array, callback) - jQuery 日本語リファレンス
http://semooh.jp/jquery/api/utilities/jQuery.map/array,+callback/

投稿2016/09/02 15:41

nnssn

総合スコア1221

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

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

sunagimochan

2016/09/02 15:57

ご回答ありがとうございます。ご提示いただいたやり方で解決できそうです。 mapにこのような使い方があるとは知りませんでした。
guest

0

if文で全選択パターンを列記して動かしている状態です。

具体的にどのようなパターンか教えてください。

以下の様なコードではダメでしょうか?
チェックボックスが切り替わる度に、グラフを更新しています。

javascript

1//初期ロードの処理 2$(function() { 3 //チェックボックスにchangeイベントを設定する 4 $("input[type='checkbox']").onchange(drawGraph); 5}); 6 7/** 8 * グラフを更新する 9 */ 10function drawGraph() { 11 $("input[type='checkbox']:checked").each(function() { 12 category.push($(this).val()); 13 }); 14 $.jqplot('graph', category); 15}

投稿2016/09/02 15:26

yuji38kwmt

総合スコア437

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

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

sunagimochan

2016/09/02 15:45

回答ありがとうございます。if文の例を追加しました。情報不足で申し訳ございません。 ご提示いただいたscriptですと、categoryの内容を文字列と認識してしまって データが入っていない状態になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問