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

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

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

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

Q&A

解決済

2回答

2400閲覧

マウスでクリックしたところに重なるオブジェクトidを取得したい。

javascripter

総合スコア12

JavaScript

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

0グッド

0クリップ

投稿2016/09/12 11:17

編集2016/09/12 11:44

例えばマウスである画像上をクリックした場合、その画像に割り振られたidを取得したいです。
また、画像にonclick属性をつけずに実装したいです。
検索をかけても見つからなかったので、こちらで質問させていただきます。

関数のみで実装できる方法がありましたら教えてください。

追記
すみません
javascriptのみでお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こうしてください

javasript

1try{ 2document.addEventListener ('click',function(e){myfunc(e)},true); 3}catch(e){ 4document.attachEvent('onclick',function(e){myfunc(e)}); 5} 6/*document内のすべてのclickイベントを拾ってmyfuncに渡します*/ 7function myfunc(e){ 8 var t = (e.srcElement || e.target);//イベントからターゲット(タグ)を抽出します 9 if(t.nodeName=="IMG" && e.type=="click"){//タグがIMGでイベントがclickのとき 10 console.log(t.id);//ターゲットのidをコンソールに表示します 11 } 12}

投稿2016/09/12 12:03

編集2016/09/13 11:44
yambejp

総合スコア114839

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

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

javascripter

2016/09/13 11:01

ありがとうございます。 できればソースの解説をおねがいします。
yambejp

2016/09/13 11:44

解説つけときました
think49

2016/09/13 12:05

細かい点ですが、いくつか改善案を。 - 「function(e){myfunc(e)}」 -> 「myfunc」(無名関数を削除) - 「e.srcElement || e.target」 -> 「e.target || e.srcElement」(addEventListener 優先なので e.target を優先) - 「t.nodeName」 -> 「t.tagName」(nodeNameは全てのノードに存在しうるが、tagNameがあるのは要素ノードだけ) ところで、addEventListenerでキャプチャリングフェーズを指定しているのは何か意図があっての事でしょうか。
javascripter

2016/09/13 12:34

理解できました ありがとうございます。 最後に1つ質問なのですが、e.targetや e.type=="click"は絶対必要ではないのではと疑問に思いました。 この2つは何を意味するのでしょうか?
javascripter

2016/09/13 12:35

私もtrueになっている訳を知りたいです。
yambejp

2016/09/14 03:18

ご指摘いろいろありがとうございます 備忘録を見ながらいろいろ思い出してみましたがどうも覚えていません。 今思えばなんでつけちゃったんのかわかりません 以前ハマった時にキャプチャで乗り切ったことがあったような記憶があり とりあえず怪しい時はつけとけって思考停止になっていたんだと思います。 不要なものはないほうがよいでしょう。
yambejp

2016/09/14 03:20

ちなみにe.targetや e.type=="click"は、ほかのイベントを全部おなじmyfuncに 流し込んだ場合に、割り振るためにつかってます。 今回はclickだけなのであえてチェックする意味はないです
think49

2016/09/14 03:39

yambejpさん、返信ありがとうございます。 > 以前ハマった時にキャプチャで乗り切ったことがあったような記憶があり そういうこともあるのですね。 > 今回はclickだけなのであえてチェックする意味はないです 「e.target は必要」という事だけ補足しておきます。 yambejpさんにその意図はないと思いますが、文脈的に「e.targetも不要」と解釈出来なくもないので念のため。
javascripter

2016/09/14 08:45

ありがとつがざいました。
guest

0

jqeuryですが

jqeury

1$(function() { 2 $('img').on("click", function() { 3 console.log($(this).attr('id')); 4 }); 5});

投稿2016/09/12 11:38

chiro.0519

総合スコア118

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問