• ベストアンサー

this の渡し方

いつもお世話になります。 <div onclick="ChngStr(this,'bbbb')"・・・>aaaa</div> function ChngStr(obj,Str){ obj.innerHtml=Str; } これでaaaaをクリックすると、aaaaが、bbbbに変わります。 実際には、ChngStr()で、いろいろと処理を行うのですが。 質問は、ChngStr()で、thisを渡せば上記のようなスクリプトで、 <div>の内容を変えられますが、このthisを渡さないで同じように ChngStr()の中で、thisつまり<div>を扱えないものでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

サンプルです。 <html> <head> <title></title> <script type="text/javascript"> // window.eventをIE以外でも利用可能にする // 参考 http://p2b.jp/index.php?UID=1152131691 if(window.addEventListener){ window.addEventListener('click', function(e){ window.event = e; }, true); } function sample(Str){ // イベント発生元を得る(IE:srcElement / IE以外:target) var obj = event.target||event.srcElement; obj.innerHTML = Str; } </script> </head> <body> <div onclick="sample('XYZ')">ABC</div> <div onclick="sample('789')">123</div> </body> </html>

rqg2010
質問者

お礼

steel_grayさん、お早うございます。 EventListenerの考え方が今一解りません でも、サンプルまで提示していただきやろうとしていることはできました。どうもありがとうございました。

その他の回答 (1)

  • ANASTASIAK
  • ベストアンサー率19% (658/3306)
回答No.1

<div id="div1" onclick="ChngStr('bbbb')"・・・>aaaa</div> <script> function ChngStr(Str){ div1.innerHTML=Str; } </script>

rqg2010
質問者

お礼

ANASTASIAKさん、早速レスありがとうございます。 確かに、thisを使わなくてすみますが、 これでは、汎用性がなくなってしまいます。 ChngStr()を実行したエレメントをChngStr()の中で自動的に取得したいのですが。