• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptのイベントの付加で悩んでいます)

JavaScriptのイベントの付加で悩んでいます

このQ&Aのポイント
  • IEでのイベントの付加方法について教えてください。
  • 上記のプログラムではクリックした画像の番号が正しく表示されません。
  • イベントの設定方法を具体的に教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30818
noname#30818
回答No.2

>bodyの中には<img id="nantoka1" />のようなimgタグがnantoka1からnantoka10まであるとします。 >この状態でnantoka1~nantoka10をクリックすると、それぞれに対応した画像の番号(1~10)を表示したいのですが このように仰っていますのでb_methodでイベントの発生元がわかれば良いじゃないでしょうか。 そうするとidを参照できますよね? そこからアルファベットを取り除くと番号だけが残ります。 #1のテストの結果。 document.images[i].onclickで関数を設定したら this で発生元が参照でき、 attachEventで追加したなら event.srcElement(IE) event.target(Firefox) で発生元が参照できるんじゃないでしょうか。 違いますか?

puripuriman
質問者

お礼

二度の回答本当に感謝します。 そういうことだったのですね。完全に僕の理解力不足でした。すいません。試してみたところ無事解決しました! 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#30818
noname#30818
回答No.1

簡単なテスト方法です。 iは10まで増やしているのでイベント発生時は10になっているんじゃないかな。 window.onload = function(){ /* for (var i = 0; i < document.images.length; i++){ document.images[i].onclick= b_method; } */ for (var i = 0; i < document.images.length; i++){ document.images[i].attachEvent('onclick', function(event) { c_method(i); }); } } function b_method(){ alert(this.id.replace(/[a-z]+/,''));//this = imgイベントの発生元 } function c_method(){ alert(window == this);//this = window alert(event.target)//undefined(IE) alert(event.srcElement.id)//event.srcElement = imgイベントの発生元 }

puripuriman
質問者

お礼

回答ありがとうございます。 テストしてみたところ、おっしゃられている通りonclickが呼ばれた時に、b_methodに現在のiの値が渡されているらしく、どれをクリックしても10になっているようでした。 そこで他の方法をいろいろと考えてみたのですが、なかなか良い方法が思いつきません。何か良い方法はないでしょうか。document.getElementById('xxx').innerHTML = '<img id="nantoka1" onclick="self.b_method(' + i + ')" />'; なんて方法も使えないですし・・・。

すると、全ての回答が全文表示されます。

関連するQ&A