下記2つを最後に呼び出してまとめたいのですが、let shoppingCalc =と変数に入れてもfunction 変数名 とトランスパイルされません。
let shoppingCalc = document.getElementById('shoppingBtn').onclick = () => { }; document.getElementById('shoppingBtnGram').onclick = () => { }; //まとめる let shoppingCalcAll = getIdshoppingBtn.addEventListener('click', ()=> { shoppingCalcGram(); shoppingCalc(); });
イベントリスナーの場合どのようにして関数に名前を付けて再利用するのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答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総合スコア4269
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
総合スコア1280
>>>
関数オブジェクト(かんすうオブジェクト、英: function object)は、プログラミング言語において、関数(サブルーチンないしプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指向のそれに限らず、「第一級オブジェクト」という語におけるのと同じ、メモリ上に空間を確保されたもの、といった意味である。関数が第一級オブジェクトである場合は特に第一級関数と言う。
このことでしょうか?
関数という名前のオブジェクト=箱
という事でしょうか?
オブジェクト=箱という表現は何とも言えませんが、
説明の方はそれで大丈夫だと思います。
詳しくは下記のページを見てください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope
退会済みユーザー
2017/02/28 07:39
メインメモリーの予約した一部領域に式が記憶されている=関数といった方がより正確なのですかね。
よく名札や、箱を変数のたとえに使いますが、関数やオブジェクトを箱という人もいるのでそのように言いました。
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
総合スコア50
退会済みユーザー
2017/02/28 06:02
ありがたいです。
('click', matometai());ここで関数を呼び出すのですね。
私はここに変数を入れて代入してみたのですがエラーになりました。
全く独立したところに関数を作ってイベントリスナー(jqueryではイベントファンクションといいますが、生のJSはこの言い方はしないのですよね?)の無名関数に入れ込めばいいのですね。
具体的なコードがわからないのでエラーについてなんとも言えませんが、
http://qiita.com/Lewuathe/items/5827a9b429aa71c4f76e
こんな感じの実装をすると解決できるのではないでしょうか。
退会済みユーザー
2017/02/28 06:30
ありがとうございました。
2017/02/28 07:49
To: ma3tkさん
> getIdshoppingBtn.addEventListener('click', matometai());
は
getIdshoppingBtn.addEventListener('click', matometai);
では?
退会済みユーザー
2017/03/01 05:34
そうみたいですね。関数の処理結果ではなく関数そのものを引数としてaddEventlisner関数に渡したい時は()はつけないようですね。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
退会済みユーザー
2017/02/28 06:12
2017/02/28 06:17
退会済みユーザー
2017/02/28 06:31
2017/02/28 06:33
退会済みユーザー
2017/02/28 06:38
2017/02/28 06:39
退会済みユーザー
2017/02/28 07:00