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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2463閲覧

jQueryの関数のまとめ方と、その関数の呼び出し方法について

C.Darrenport

総合スコア13

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/09/17 05:06

###前提・実現したいこと
いつもお世話になっております。
jQueryの関数のまとめ方と、その関数の呼び出し方法について、ご教授頂きたいです。

【実現したい事】
変数functionFireworksに関数を定義し、実行しました。(ソースコード上側)
定義した箇所では問題なく、作動しましたが、
別の箇所(下の方のelse ifの後)でも同様の関数を実施したいため、呼び出しましたが、エラーが発生し、
対応に困っており、ご教授頂きたいです。

※本サイトに似た質問があり、拝見させて頂きましたが、
勉強不足で理解できませんでしたので、教えて頂けると助かります。
https://teratail.com/questions/68561

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

javascript

1 $(".target").each(function(){ 2 //var eachPosition = $(this).data("pointTop"); 3 //console.log($(this).data("pointTop")); 4 var target = $(this); 5 $(this).find("label").click(function(){ 6 var targetPosition = target.data("pointTop"); 7 var eachLabel = $(this); 8 var input = $(this).find("input"); 9 if(targetPosition===700){ 10 input.attr("value",2); 11 12 ////////////////////////////////////////////////////////////////////// 13 /////// 下記関数をfunctionFireworks(何かしらの変数or関数名)にまとめたいと考えています /////////// 14 var functionFireworks = (function(){ 15 16 //上記定義では問題なく、関数は実行されました。 17 //(変数に代入、関数名での設定の両方の方法で問題ありませんでした) 18 //下の方のelse ifの後の呼び出しでエラーが発生するため 19 //変数に格納せずに 20 //(function functionFireworks(){ 21 //での定義も試しましたが上手く行きませんでした。 22 23 console.log(input.attr("value")); 24 eachLabel.find("img.ball").fadeOut(0); 25 eachLabel.find("img.halfhalf").fadeIn(0,function(){ 26 var timerID = setTimeout(function(){ 27 eachLabel.find("img.halfhalf").fadeOut(0); 28 eachLabel.find("img.half").fadeIn(0,function(){ 29 var timerID = setTimeout(function(){ 30 eachLabel.find("img.half").fadeOut(0); 31 eachLabel.find("img.all").fadeIn(0,function(){ 32 var timerID = setTimeout(function(){ 33 eachLabel.find("img.all").fadeOut(500); 34 },500); 35 }); 36 },500); 37 }); 38 },500); 39 }); 40 return; 41 })(); 42 }else if(targetPosition===710){ 43 input.attr("value",1); 44 45 ////////////////////////////////////////////////////// 46 //上記input...の後にfunctionFireworksを実施したいです。 47 48 //下記方法や、functionFireworksの定義の仕方(変数に代入 or 関数名として定義) 49 //を試してみましたが、解決しませんでした。 50 //発動しない 51 //functionFireworks; 52 //エラー発生 53 //functionFireworks(); 54 //エラー発生 55 //var test = functionFireworks(); 56 }; 57 }); 58 });

###試したこと
上記ソースコードの該当箇所に合わせて記載させて頂きました。

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

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

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

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

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

C.Darrenport

2017/09/17 06:44

申し訳ありません。下記アンサーで修正し、上書き保存してしまったため次から追記致します。エラーの確認方法のリンクの添付有難うございます。
guest

回答1

0

ベストアンサー

上記コードでは定義後すぐに実行していますので、functionFireworksには関数ではなく実行結果(returnで何も返していないのでおそらくundefined)が入ってしまっています。

またif節の条件に関係ありませんから、定義はif節の外に書くべきでしょう。

lang

1$(".target").each(function(){ 2//var eachPosition = $(this).data("pointTop"); 3//console.log($(this).data("pointTop")); 4 var target = $(this); 5$(this).find("label").click(function(){ 6 var targetPosition = target.data("pointTop"); 7 var eachLabel = $(this); 8 var input = $(this).find("input"); 9 10 // if節の外に定義 11 var functionFireworks = function(){ 12 console.log(input.attr("value")); 13 eachLabel.find("img.ball").fadeOut(0); 14 eachLabel.find("img.halfhalf").fadeIn(0,function(){ 15 var timerID = setTimeout(function(){ 16 eachLabel.find("img.halfhalf").fadeOut(0); 17 eachLabel.find("img.half").fadeIn(0,function(){ 18 var timerID = setTimeout(function(){ 19 eachLabel.find("img.half").fadeOut(0); 20 eachLabel.find("img.all").fadeIn(0,function(){ 21 var timerID = setTimeout(function(){ 22 eachLabel.find("img.all").fadeOut(500); 23 },500); 24 }); 25 },500); 26 }); 27 },500); 28 }); 29 return; 30 }; 31 32 if(targetPosition===700){ 33 input.attr("value",2); 34 functionFireworks(); 35 }else if(targetPosition===710){ 36 input.attr("value",1); 37 functionFireworks(); 38 }; 39}); 40});

試してないのでちょっと不安ですが、上記コードを実行してみてください。m(_ _)m

投稿2017/09/17 05:24

namnium1125

総合スコア2043

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

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

C.Darrenport

2017/09/17 06:46

回答有難うございます。 非常に助かりました。 関数の定義や再利用方法など実戦で学べて勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問