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

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

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

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

Q&A

解決済

3回答

4321閲覧

イベントリスナーの場合どのようにして関数に名前を付けて再利用するのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2017/02/28 05:49

下記2つを最後に呼び出してまとめたいのですが、let shoppingCalc =と変数に入れてもfunction 変数名 とトランスパイルされません。

let shoppingCalc = document.getElementById('shoppingBtn').onclick = () => { }; document.getElementById('shoppingBtnGram').onclick = () => { }; //まとめる let shoppingCalcAll = getIdshoppingBtn.addEventListener('click', ()=> { shoppingCalcGram(); shoppingCalc(); });

イベントリスナーの場合どのようにして関数に名前を付けて再利用するのでしょうか?

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

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

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

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

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

guest

回答3

0

shoppingBtn、shoppingBtnGramのイベントリスナー関数を別途定義して利用すればいいと思いますが。

javascript

1function shoppingCalc(evt) { 2} 3function shoppingCalcGram(evt) { 4} 5 6document.getElementById('shoppingBtn').onclick = shoppingCalc; 7document.getElementById('shoppingBtnGram').onclick = shoppingBtnGramClick; 8 9}; 10 11getIdshoppingBtn.addEventListener('click', ()=> { 12 shoppingCalcGram(); 13 shoppingCalc(); 14});

投稿2017/02/28 06:05

編集2017/02/28 06:17
turbgraphics200

総合スコア4267

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

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

退会済みユーザー

退会済みユーザー

2017/02/28 06:12

ありがとうございます。 .onclick = shoppingBtnGramClick; の代入されるところに始めに定義した関数名のみを指定すればよいという事でしょうか? ()はなぜいらないのでしょうか? 初心者ですいません。
退会済みユーザー

退会済みユーザー

2017/02/28 06:31

ありがたいです。理由は教えていただけませんか?
turbgraphics200

2017/02/28 06:33

()つけると、関数を実行した結果がonclickに設定されます。関数自体を設定したい場合は、()をつけずに設定します。
退会済みユーザー

退会済みユーザー

2017/02/28 06:38

ありがとうございます。 恐らく()を付けないと関数も変数の一種なので、変数と同じように処理する前の関数そのものがonclickに代入される。 ()があると関数を実行という意味になるので、関数の実行結果が代入され、関数自体を代入できないので、今回は関数自体を代入したかったので、()を付けなかったという事でしょうね。
退会済みユーザー

退会済みユーザー

2017/02/28 07:00

ありがとうございました。
guest

0

JavaScript

1function hogeFunction(tag) {console.debug("hogeFunction:" + tag);} 2 3function hogeEvent(callback, text) { 4 callback(text); 5} 6 7var hogeEventListener1 = null; 8var hogeEventListener2 = null; 9 10(() => { 11 hogeEventListener1 = (text) => { 12 hogeFunction(text); 13 }; 14 15 let func = hogeFunction; 16 hogeEventListener2 = (text) => { 17 func(text); 18 }; 19 20 hogeEvent(hogeEventListener1, "before"); 21 hogeEvent(hogeEventListener2, "before"); 22})(); 23 24var hogeFunction = function(tag) {console.debug("newFunction:" + tag);}; 25 26(() => { 27 hogeEvent(hogeEventListener1, "after"); 28 hogeEvent(hogeEventListener2, "after"); 29})(); 30 31//出力 32//hogeFunction:before 33//hogeFunction:before 34//newFunction:after 35//hogeFunction:after

JavaScript におけるすべての関数は、実際には Function オブジェクトです。

投稿2017/02/28 07:16

abs123

総合スコア1280

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

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

退会済みユーザー

退会済みユーザー

2017/02/28 07:23

>>> 関数オブジェクト(かんすうオブジェクト、英: function object)は、プログラミング言語において、関数(サブルーチンないしプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指向のそれに限らず、「第一級オブジェクト」という語におけるのと同じ、メモリ上に空間を確保されたもの、といった意味である。関数が第一級オブジェクトである場合は特に第一級関数と言う。 このことでしょうか? 関数という名前のオブジェクト=箱 という事でしょうか?
退会済みユーザー

退会済みユーザー

2017/02/28 07:39

メインメモリーの予約した一部領域に式が記憶されている=関数といった方がより正確なのですかね。 よく名札や、箱を変数のたとえに使いますが、関数やオブジェクトを箱という人もいるのでそのように言いました。
guest

0

ベストアンサー

getIdshoppingBtn.addEventListener('click', ()=> { shoppingCalcGram(); shoppingCalc(); });

の部分の、

()=> { shoppingCalcGram(); shoppingCalc(); }

ここをまとめたいのであれば、

javascript

1function matometai(){ 2 shoppingCalcGram(); 3 shoppingCalc(); 4} 5getIdshoppingBtn.addEventListener('click', matometai()); 6

という形でしょうか。

投稿2017/02/28 05:55

ma3tk

総合スコア50

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

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

退会済みユーザー

退会済みユーザー

2017/02/28 06:02

ありがたいです。 ('click', matometai());ここで関数を呼び出すのですね。 私はここに変数を入れて代入してみたのですがエラーになりました。 全く独立したところに関数を作ってイベントリスナー(jqueryではイベントファンクションといいますが、生のJSはこの言い方はしないのですよね?)の無名関数に入れ込めばいいのですね。
退会済みユーザー

退会済みユーザー

2017/02/28 06:30

ありがとうございました。
kei344

2017/02/28 07:49

To: ma3tkさん > getIdshoppingBtn.addEventListener('click', matometai()); は getIdshoppingBtn.addEventListener('click', matometai); では?
退会済みユーザー

退会済みユーザー

2017/03/01 05:34

そうみたいですね。関数の処理結果ではなく関数そのものを引数としてaddEventlisner関数に渡したい時は()はつけないようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問