🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

2116閲覧

JavaScriptでクリックしたボックスが何番目なのかを取得して数字を取得したい。

UpaZiro

総合スコア17

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/12/23 13:45

JavaScriptで最低一つからそれ以上のdivタグからなる正方形のボックスを生成します。

例)以下のボックスはJavaScriptで自動生成される。ボックスの数は1〜それ以上でランダムで決められる。各divにはbox1,box2,box3…というid属性と縦横の大きさや、背景色を決めるためのclass属性が振り分けられている。

<div id=“box1” class=“box”>A</div> <div id=“box2” class=“box”>B</div> <div id=“box3” class=“box”>C</div> …

これらのboxをクリックした際に、クリックしたボックスが何番目なのかを取得して、JavaScriptでboxNumにその番号を格納したいのです。

ただ、document.getElementByIdで一つ一つにイベントを不特定多数のボックスに設定していくのは流石に無理があるとなり、路頭に迷っている始末です。

何かいい方法はないでしょうか?

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

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

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

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

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

guest

回答4

0

querySelectorAllを使って一括で取得するための目印を付けましょう。(class="box"が使えるならそれでも良し)
下記のコードでclass="box"の要素を一括で取得出来ます。あとは煮るなり焼くなり。

JavaScript

1const nodes = document.querySelectorAll(".box"); 2 3nodes.forEach((node,index)=> 4{ 5 node.addEventListener("click",evt=> 6 { 7 console.log(`${index+1}番目のbox`); 8 }); 9}); 10

投稿2020/12/23 15:13

AT_2nd

総合スコア266

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

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

0

js

1 2//1 3document.addEventListener ('click', event=> { 4 let e = event.target, r = /^box(\d+)$/.exec(e.id); 5 if (r) 6 alert (r[1]); 7 if (e.classList.contains ('box')) 8 alert (e.className); 9}, false); 10 11//2 12let pair = Array.from (document.querySelectorAll ('.box'), (e, i)=> [e, i]); 13let map = new Map (pair); 14document.addEventListener ('click', event=> { 15 let e = event.target; 16 if (map.has (e)) 17 alert (map.get (e)); 18}, false);

投稿2020/12/23 20:26

編集2020/12/23 20:40
babu_babu_baboo

総合スコア616

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

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

0

ベストアンサー

javascript

1document.addEventListener('click',e=>{ 2 const t=e.target.closest('.box'); 3 if(t!==null){ 4 const idx=[...document.querySelectorAll('.box')].indexOf(t); 5 console.log(idx); 6 } 7});

投稿2020/12/24 00:20

yambejp

総合スコア116690

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

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

0

共通する項目は何なのかを考えてみたらヒントになるかと思います。提示されたコードだけだと、div或いは.boxとなりますが、html全体も関わってくる可能性があるので、あくまで考え方としてお答えしておきます。

投稿2020/12/23 15:01

cerfweb

総合スコア1907

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問