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

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

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

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

Q&A

3回答

3333閲覧

functionの呼び出しによるエラー

th3

総合スコア38

JavaScript

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

0グッド

0クリップ

投稿2016/02/22 05:30

編集2022/01/12 10:55

functionの呼び出し時にエラーが出てしまいます。
エラー内容が"sub.html:91 Uncaught ReferenceError: get is not defined"です。
現在のgetの呼び出し方は以下のプログラムなのですが、このような呼び出し方はできないのでしょうか?
///javascriput///

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE HTML> <html> <head> <title>sub</title> <img id="aaa" src="/sub/map.jpg" height="500"> <script> //厳格モード "use strict";
var x=0; var y=0; (function (){ //elementをid="aaa"に設定 var element = document.getElementById("aaa"); //マウスを押すたびに実行される関数 function MouseDownFunc(event){ //右ボタンのみ反応 if(event.button == 0){ //クリック時のx座標 x=event.x; //クリック時のy座標 y=event.y; } } // イベントリスナーに対応している if(element.addEventListener){ // マウスのボタンを押すと実行されるイベント element.addEventListener("mousedown" , MouseDownFunc); // アタッチイベントに対応している }else if(element.attachEvent){ // マウスのボタンを押すと実行されるイベント element.attachEvent("onmousedown" , MouseDownFunc); } })(); onclick = function() { draw();}; function draw() { //"c1"から要素を取得する var canvas = document.getElementById('c1'); if ( ! canvas || ! canvas.getContext ) { return false; } var ctx = canvas.getContext('2d'); //Imageオブジェクトを生成 var img = new Image(); //元になる画像 img.src = "/sub/map.jpg"; //画像が読み込まれるのを待ってから処理を続行 img.onload = function() { //img.srcの指定座標を表示 ctx.drawImage(img, x, y, 500, 300, 80, 60, 300, 200); function get() { //"c1"から要素を取得する var imagedata = ctx.getImageData(x,y,500,300); var idata = imagedata.data; //ピクセルデータをidataにセット var num = idata.length; //ピクセルデータ総数を取得 var pix = num / 4; //ピクセル数を取得 var count = new Array(); var a,b; for(a=1; a<500 ;a++){ count[a]= new Array(); for(b=1; b<500 ;b++){ for ( var i = 0 ; i < pix ; i+=4 ){ //赤・緑・青のデータを取得 var r = idata[ i*4 ]; var g = idata[ i*4 + 1 ]; var b = idata[ i*4 + 2 ]; //グレースケール化する処理 var gray = parseInt(( r*30 + g*59 + b*11 ) / 100); if(gray<150){ count[a][b] = "#"; }else{ count[a][b] = "0"; } } } } for(var a=1; a<500; a++){ count[a][500] = "#"; } for(var b=1; b<500; b++){ count[500][b] = "#"; } document.write("<p>"); document.write(count[50][50]); document.write("</p>"); } } get(); }
</script> </head> <body> <canvas id="c1" width="1176" height="700"></canvas> </body> </html>

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

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

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

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

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

guest

回答3

0

実行する環境にないので、おそらくですが・・・
img.onload = function() {
function get(){}
}
get();
この記述だと、get()が定義されるのがimgロード後になってしまうかと思われます。

現状の処理の順序としては下記の通りです。

・javascript処理
オンロード処理待機
get実行(まだonloadが実行前のため、get()未定義の状態)
・html処理
img読み込み
オンロード処理実行(ここでget()が定義されている)

以上を参考に修正してみてください。

投稿2016/02/22 10:24

編集2016/02/22 10:46
sonor_3rd

総合スコア114

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

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

0

Javascript

1// 間違い。セミコロン不要 2function get();{ 3 ... 4} 5 6// 正しい 7function get() { 8 ... 9}

###追記
外から中を見てるので見えないのだと思います。
image.onloadに設定されている function の中に get が宣言されてますので。
それを外に出す必要があるのでは。

javascript

1function draw() { 2 function get = { 3 ・・・ 4 } 5 6 img.onload = function () { 7 ・・・ 8 get(); 9 ・・・ 10 } 11 12 get(); 13} 14

投稿2016/02/22 05:38

編集2016/02/22 06:08
root_jp

総合スコア4666

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

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

th3

2016/02/22 05:44

回答ありがとうございます。 直してみましたが、getが呼び出されないです。
guest

0

文法が間違っています。がんばってください。

javascript

1function draw(){ 2 ... 3 function get(){ 4 ... 5 } 6 get(); 7}

#####追記
質問文を見るとそうは思えないけど、なんとなくスコープの問題のような気がするので、

javascript

1 function get() { 2 ... 3 }

↑を↓にしたらどうなりますか?

javascript

1 get = function() { 2 ... 3 }

投稿2016/02/22 05:32

編集2016/02/22 05:54
Lhankor_Mhy

総合スコア35865

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

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

th3

2016/02/22 05:40

回答ありがとうございます。 直してみましたが、getが呼び出されなかったです。
Lhankor_Mhy

2016/02/22 05:41

と、思ったけど、その書き方だとそのエラーにならないか。
Lhankor_Mhy

2016/02/22 05:43

あ、コメント拝読。やっぱり他にも間違っているところがありそうですね。もう少しコードを提示できますか?
th3

2016/02/22 05:48

ありがとうございます。 念のため、すべて提示しておきますね。
Lhankor_Mhy

2016/02/22 05:56 編集

あら、また間が悪い…… 後から提示されたコード読んでまた書きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問