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

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

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

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

Q&A

6回答

661閲覧

JavaScript クリックされたidの表示

eqez

総合スコア4

JavaScript

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

1グッド

2クリップ

投稿2020/05/28 02:00

編集2020/05/28 02:03

前提・実現したいこと

ボタンを5個作りそれぞれにidを付けました
呼び出す関数が一つの場合にどのボタンがクリックされたか、idを表示するにはどうしたらいいでしょうか
関数を分けるというのは無しでお願いいたします

↓この方法以外にあればお願いいたします

<script> function a(){ if(n==1){ alert("a1"); } if(n==2){ alert("a2"); } if(n==3){ alert("a3"); } if(n==4){ alert("a4"); } if(n==5){ alert("a5"); } } </script> <input id="a1" type="button" value="1" onclick="n=1;a()"> <input id="a2" type="button" value="2" onclick="n=2;a()"> <input id="a3" type="button" value="3" onclick="n=3;a()"> <input id="a4" type="button" value="4" onclick="n=4;a()"> <input id="a5" type="button" value="5" onclick="n=5;a()">

該当のソースコード

JavaScript

1<script> 2function a(){ 3alert(this.id);//どのボタンが押されたかidを返したい 4} 5</script> 6 7<input id="a1" type="button" value="1" onclick="a()"> 8<input id="a2" type="button" value="2" onclick="a()"> 9<input id="a3" type="button" value="3" onclick="a()"> 10<input id="a4" type="button" value="4" onclick="a()"> 11<input id="a5" type="button" value="5" onclick="a()">
DrqYuto👍を押しています

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

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

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

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

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

guest

回答6

0

もういい加減そういうのは、document で監視しましょう。

js

1/* 2 <input id="a1" type="button" value="1"> 3 <input id="a2" type="button" value="2"> 4 <input id="a3" type="button" value="3"> 5 <input id="a4" type="button" value="4"> 6 <input id="a5" type="button" value="5"> 7*/ 8 9function a (e) { 10 alert (e.id); 11} 12 13document.addEventListener ('click', (event)=> { 14 let e = event.target, {nodeName, type} = e; 15 if ('button' === type && 'INPUT' === nodeName) 16 a (e); 17}, false);

投稿2020/05/28 02:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

eqez

2020/05/28 03:07

これが現代風の考え方なんですかね?
退会済みユーザー

退会済みユーザー

2020/05/28 03:19

私の師匠様は、最初からこれでしたよ。(元気でいるのでしょうか?) table の中の td の中が input 要素だとして数千行でもあればその有難さを実感できるのでは? focus blue イベントでも document から監視できますよ!
eqez

2020/05/28 03:34

ありがとうございます 私はプロではないのでわからないのですが、 このコードのマイナス点を逆にお聞きしたいです yambejp氏や、maisumakun氏の見解をお聞きしたいです
退会済みユーザー

退会済みユーザー

2020/05/28 04:20

欠点?クリックされた要素が目的の要素なのかの判断が紛らわしのかもしれない。 (親の要素をさかのぼって検索する必要があったりと…。しかしそれだってHTMLの構造上、十数段さかのぼれば体外終点(body要素) にたどり着く) しかしその欠点は目的の要素に id なり class名を直接付けることで即解決する。 提示された button には本来 id なんていらない。 value 値はすぐ取得できる。 でもそのボタンと同じようなものが同一のページに複数あった場合、やっぱりどのブロックのボタン要素かを特定しなければならない。きっとボタン群の親要素に目印(id/class) を付けることになる。それを早く特定することが肝になるかな? 例えば他の回答例のように個々の要素にイベントを張り付ける。 もしその要素ごと innerHTML とかで置換されたら今まであったイベント関数はどこに?ってことになる。document からイベントをさかのぼれば好いようにしておけば、読み込みが完了する前にでも(head要素の中)でも置ける。 プログラム側からの要請で不必要に id なんて HTML文書内に付けるものではない! (↑今、俺っ!、格好良いこと言った!名言にしてもいいよ!)
guest

0

イベントの登録方法を変えれば解決できます。

html

1<input id="a1" type="button" value="1"> 2<input id="a2" type="button" value="2"> 3<input id="a3" type="button" value="3"> 4<input id="a4" type="button" value="4"> 5<input id="a5" type="button" value="5"> 6 7<script> 8// 要素が揃うのを簡便に待つために、下に回す 9function a(){ 10alert(this.id);//どのボタンが押されたかidを返したい 11} 12 13document.getElementById('a1').addEventListener('click', a, false); 14document.getElementById('a2').addEventListener('click', a, false); 15document.getElementById('a3').addEventListener('click', a, false); 16document.getElementById('a4').addEventListener('click', a, false); 17document.getElementById('a5').addEventListener('click', a, false); 18</script>

投稿2020/05/28 02:10

maisumakun

総合スコア145192

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

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

0

こうでもいけますね

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('.target').forEach(x=>{ 4 x.addEventListener('click',e=>{ 5 console.log(e.target.getAttribute('id')); 6 }); 7 }); 8}); 9</script> 10<input id="a1" type="button" value="1" class="target"> 11<input id="a2" type="button" value="2" class="target"> 12<input id="a3" type="button" value="3" class="target"> 13<input id="a4" type="button" value="4" class="target"> 14<input id="a5" type="button" value="5" class="target">

投稿2020/05/28 03:15

yambejp

総合スコア114883

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

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

0

こちらが参考になるかと。
JavaScriptでidを取得する方法

Javascript

1function a(element) { 2 alert(element.getAttribute("id")); 3}

HTML

1<input id="a1" type="button" value="1" onclick="a(this);"> 2<input id="a2" type="button" value="2" onclick="a(this);"> 3<input id="a3" type="button" value="3" onclick="a(this);"> 4<input id="a4" type="button" value="4" onclick="a(this);"> 5<input id="a5" type="button" value="5" onclick="a(this);">

投稿2020/05/28 02:08

編集2020/05/28 02:51
kaputaros

総合スコア1844

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

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

0

引数として値を渡すのはいかがでしょうか?

html

1onclick="a(3)"

参考
https://oshiete.goo.ne.jp/qa/6440682.html

投稿2020/05/28 02:07

ToyoshimaHi

総合スコア130

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

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

0

色んなやり方があるようですね
知識を与えて下さりありがとうございます

投稿2020/05/28 03:05

eqez

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問