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

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

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

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

Q&A

解決済

3回答

1060閲覧

Iteratorで繰り返し関数を呼び出す方法。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2017/05/12 04:19

お世話になります。

Iteratorを使用して以下のコードが簡潔に書けないかと悩んでおります。

何か案があれば、ご教示いただけると助かります。

{ const click = document.getElementsByClassName('listTrigger--category'), on = document.getElementsByClassName('listTrigger--categoryOn') plusAnimation(click,on) } { const click = document.getElementsByClassName('listTrigger--tag'), on = document.getElementsByClassName('listTrigger--tagOn') plusAnimation(click,on) } { const click = document.getElementsByClassName('listTrigger--year'), on = document.getElementsByClassName('listTrigger--yearOn') plusAnimation(click,on) } { const click = document.getElementsByClassName('listTrigger--auther'), on = document.getElementsByClassName('listTrigger--autherOn') plusAnimation(click,on) }

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

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

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

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

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

guest

回答3

0

ベストアンサー

イテレータに拘る理由はなさそうですが、配列もイテレータの一種ですね。

JavaScript

1var data = [['listTrigger--category', 'listTrigger--categoryOn'], ['listTrigger--tag', 'listTrigger--tagOn'], ['listTrigger--year', 'listTrigger--yearOn'], ['listTrigger--auther', 'listTrigger--autherOn']]; 2 3for (let classList of data) { 4 plusAnimation(document.getElementsByClassName(classList[0]), document.getElementsByClassName(classList[1])); 5}

Re: ryuseiasa さん

投稿2017/05/12 17:32

think49

総合スコア18162

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

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

退会済みユーザー

退会済みユーザー

2017/05/16 04:24

一番流用しやすく分かりやすいコードでしたのでBAにさせていただきました。 この度はありがとうございました。
guest

0

Iteratorを使ってコードを簡潔にするという事なので、
1) 'listTrigger--category'、'listTrigger--tag'、'listTrigger--year'、'listTrigger--auther'をIteratorに入れておく。
2) forループで順次処理する。
というようにするのが素直だと思います。

コードは以下のような感じでしょう。

Javascript

1// イテラブルなオブジェクトである配列に、データを入れる。 2 var anArray = ["listTrigger--category", "listTrigger--tag", "listTrigger--year","listTrigger--auther"]; 3 4// 配列を基にしてイテレータを作る 5 var iterator = anArray[Symbol.iterator](); 6 7// for-of にイテレータを渡して、イテレータからデータを取り出しながら繰り返し処理をする。 8 for(var v of iterator){ 9 const click = document.getElementsByClassName(v), 10 on = document.getElementsByClassName(v + "On") 11 plusAnimation(click,on) 12 };

(注意)上記コードは動作確認をしていませんので、ミスタイプやバグが含まれているかもしれません。

投稿2017/05/12 09:21

coco_bauer

総合スコア6915

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

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

退会済みユーザー

退会済みユーザー

2017/05/16 04:25

Iteratorを使う際の参考にさせて頂きます。 この度はありがとうございました。
guest

0

意図がいまいちくみ取れませんでしたが、繰り返し処理をfor文などでまとめたいと解釈したうえで以下の回答いたします。

// 共通の接頭語の定義 var PREFIX = "listTrigger--"; // 共通の接尾語の定義 var EVENT_TARGET_SUFFIX = "On"; // plusAnimationを付けるターゲット定義の配列 var clickTargets = [ "category", "tag", "year", "auther" ]; // 定義要素にplusAnimationを実行 for(var i = 0 ; i < clickTargets.length ; i = i+1){ var targetStr = clickTargets[i]; var click = document.getElementsByClassName(PREFIX+targetStr), var on = document.getElementsByClassName(PREFIX+targetStr+EVENT_TARGET_SUFFIX) plusAnimation(click,on) }

投稿2017/05/12 04:44

編集2017/05/12 04:47
kanimaru

総合スコア1013

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

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

退会済みユーザー

退会済みユーザー

2017/05/16 04:25

Iteratorを使う際の参考にさせて頂きます。 この度はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問