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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

JavaScript

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3796閲覧

Chart.js で書いたグラフが消えない

pyamathon

総合スコア14

Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

JavaScript

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/02/04 02:24

前提・実現したいこと

htmlで検索された数字を変数としてx軸としてy軸に1の高さを持った棒グラフを描画し続けることをしたいのですが、1回書いた棒グラフが消えず、カーソルを合わせると前のグラフが出てきてしまいます。

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

HTML

1<html lang="jp" dir="ltr"> 2 <head> 3 <meta charset="utf-8"> 4 <title>test</title> 5 <script src="Chart.min.js"></script> 6 </head> 7 <body> 8 filter: <input type="text" id="myfilter" maxlength="3"> 9 <input type="button" value="検索!" id="search"> 10 <script> 11 var array01 =[]; 12 var array02 =[]; 13 document.getElementById('search').onclick = function() { 14 var t1=parseInt(document.querySelector('#myfilter').value); 15 var t2=1 16 if (MyC) { 17 MyC.destroy(); 18 } 19 array01.push(t1); 20 array02.push(t2); 21 var ctx = document.getElementById("canvas"); 22 var MyC = new Chart(ctx, { 23 type: 'bar', 24 data: { 25 labels: array01, 26 datasets: [ 27 { 28 label: ' ', 29 data: array02, 30 backgroundColor: "rgba(219,39,91,0.5)" 31 } 32 ] 33 } 34 }); 35} 36 </script> 37 <canvas id="canvas"></canvas> 38</body> 39</html>

試したこと

新しくグラフを作成する際に、作成したデータのIDを確認し、.destroyで消しているつもりなのですが消えません。

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

macでAtom、filezillaを使っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

変数MyCがローカルスコープのためオブジェクトの保持ができていないので、
グラフ作成後もif文内を通りませんね。

HTML

1・・・ 2<script> 3 var MyC; 4 var array01 =[]; 5 var array02 =[]; 6 document.getElementById('search').onclick = function() { 7 var t1=parseInt(document.querySelector('#myfilter').value); 8 var t2=1 9 if (MyC) { 10 MyC.destroy(); 11 } 12 array01.push(t1); 13 array02.push(t2); 14 var ctx = document.getElementById("canvas"); 15 MyC = new Chart(ctx, { 16 type: 'bar', 17 data: { 18 labels: array01, 19 datasets: [ 20 { 21 label: ' ', 22 data: array02, 23 backgroundColor: "rgba(219,39,91,0.5)" 24 } 25 ] 26 } 27 }); 28 } 29</script> 30・・・

こうすればif文内を通るようになり、
マウスオーバー時にグラフが戻る不具合も改善されました。

投稿2020/02/04 03:54

yureighost

総合スコア2183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問