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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

JavaScript

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

Q&A

解決済

2回答

6879閲覧

forEachでaddEventListenerを使うには

Singo109

総合スコア15

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

JavaScript

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

0グッド

0クリップ

投稿2019/06/28 11:34

編集2019/06/28 11:50

btnと言うクラス名を持つ要素に対してaddEventListenerでクリックイベントを設定しているのですが、for文を使ったものからforEach文を使うようにしたいのですが何か方法はありますでしょうか?

Javascript

1for(let i = 0; i < btn.length; i ++){ 2 btn[i].addEventListener('click',function(){ 3 if(this.value === data.results[count].correct_answer){ 4 score ++; 5 count ++; 6 }else{ 7 count ++; 8 } 9 // クイズが終了した時の表示 10 if(count === 10){ 11 qsNum.innerHTML = "あなたの正解数は" + score + "です!"; 12 qs.innerHTML = "再度チャレンジする場合は以下をクリック"; 13 genre.style.display = "none"; 14 diff.style.display = "none"; 15 } 16 answsArr = []; 17 answs.textContent = []; 18 setQuiz(data); 19 }); 20 }

Array.from(btn);でbtnと言うクラス名を持つ要素を配列にしてforEachをかけて見るところまでやったのですが、そこからaddEventListenerを使う方法がわかりませんでした。

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

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

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

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

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

yasutomi

2019/06/28 11:46

肝心のforEachを使用したコードが記載されていないため 追記をお願いします。
Singo109

2019/06/28 11:52

質問文に脱字があり誤解させてしまいました。申し訳ありません。上記のfor文を使った処理をforEach文に書き換えたいと言う質問の内容になります。
Singo109

2019/06/28 11:56

試した事は、 const btns = Array.from(btn); btns.forEach( ); でbtnと言うクラス名を持つ要素に対してforEach文を適用する事はできるのかなと思ったのですが、その場合、addEventListenerがどうやったら使えるのかがわかりませんでした。
guest

回答2

0

ベストアンサー

このようにします。

html

1<button class="btn">btn</button> 2<button class="btn">btn</button> 3<button class="btn">btn</button> 4<script> 5var btn = document.querySelectorAll('.btn') 6btn.forEach(function(el, i) { 7 el.addEventListener('click', function() { 8 alert(i) 9 }) 10}) 11</script>

投稿2019/06/28 11:55

yasutomi

総合スコア2937

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

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

Singo109

2019/06/28 12:55

ありがとうございます。なるほどです!
guest

0

Array.Fromが今風ですがこう書くと適用範囲が広がります

javascript

1[].forEach.call(btn,function(x){ 2 x.addEventListener('click',function(e){ 3 ・・・ 4 }); 5});

投稿2019/06/28 11:56

yambejp

総合スコア114784

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

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

Singo109

2019/06/28 12:54

ありがとうございます。こういうやり方があるのですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問