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

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

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

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

3073閲覧

【Monaca】D3.jsが動きません

t33

総合スコア33

D3.js

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

1グッド

1クリップ

投稿2016/10/15 10:13

編集2016/10/16 04:42

###概要

Monacaで「D3.js」プラグインを使用したいのですが、1行目でエラーが出ます。
初心者で色々調べたのですが全く分からなかった為こちらに質問致しました。何卒よろしくお願いします。

エラーメッセージ
Uncaught TypeError:Cannot call method 'zoom' of undefined

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

<script> var zoom = d3.behavior.zoom() ; ←ここでエラーが出ます。 </script>

###ソース全文

HTML

1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <script src="components/loader.js"></script> 8 <link rel="stylesheet" href="components/loader.css"> 9 <link rel="stylesheet" href="css/style.css"> 10 11 12 13 14</head> 15<body> 16 <div id="parent"> 17 <img src="img/test.png" id="target"> 18</div> 19 20<p class="coordinate">scale: <mark id="scale">?</mark></p> 21<p class="coordinate">translate: [ <mark class="translate">?</mark>, <mark class="translate">?</mark> ]</p> 22 23<p><a id="method1">設定</a></p> 24<p><a id="method2">解除</a></p>

JavaScript

1<script> 2 // ズーム操作のコンストラクタを作成 3var zoom = d3.behavior.zoom() ; 4//var zoom = d3.zoom() ; 5 6// ズーム操作に対応するイベントリスナーを指定する 7zoom.on( "zoom", function() { 8 // イベントオブジェクト 9 var event = d3.event ; 10 11 // スケール (現在の倍率) 12 var scale = event.scale ; 13 14 // トランスレート (X方向、Y方向への移動距離) 15 var tx = event.translate[0] ; 16 var ty = event.translate[1] ; 17 18 // 出力 19 d3.select( "#scale" ).text( scale ) ; 20 d3.selectAll( ".translate" ).data( event.translate ).text( function( d, i ) { return d ; } ) ; 21} ) ; 22 23// クリックイベント 24d3.select( "#method1" ).on( "click", function() { 25 // div要素に対して、call()メソッドでズーム操作を適用 26 d3.select( "#parent" ).call( zoom ) ; 27} ) ; 28 29// クリックイベント 30d3.select( "#method2" ).on( "click", function() { 31 // div要素に指定したズーム操作のイベントを削除 32 d3.select( "#parent" ).on( ".zoom", null ) ; 33} ) ; 34</body> 35</html> 36 </script>

###補足
・「D3.js」、「jQueri」のプラグインはMonaca内の「CSS/JSコンポーネントの追加と削除」から表示されたものを全てダウンロードしています。

申し訳ありませんがどなたかご教授の頂けないでしょうか。よろしくお願い致します。

###追記
後日自分が必要になった箇所を記載致します。
(旧)d3.behavior.zoom() ⇒ (新)d3.zoom()

// スケール (現在の倍率)
(旧)event.scale ⇒ (新)event.transform.k

// トランスレート (X方向への移動距離)
(旧)event.translate[0] ⇒ (新)event.transform.x

// トランスレート (Y方向への移動距離)
(旧)event.translate[1] ⇒ (新)event.transform.y

taro373👍を押しています

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

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

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

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

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

kei344

2016/10/16 03:03

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
t33

2016/10/16 03:55

修正しました。初めて使用するので助かりました。ありがとうございます。
guest

回答1

0

ベストアンサー

Uncaught TypeError:Cannot call method 'zoom' of undefined

"undefinedのzoomメソッドを呼び出すことができません"

要するにd3.behaviorが未定義ということです。

D3.jsのバージョンはいくつでしょうか?
3.xから4.0のアップデートで後方互換性がなくなりました。

d3.behavior.zoomd3.zoomになっています。

d3-zoomの3.xから4.0の変更

投稿2016/10/16 00:29

nukosuke

総合スコア145

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問