- ベストアンサー
イベントハンドラの関数の引数について
こんにちは。 Object.onmouseoverのイベントハンドラにObject.classNameとeventを引数とする関数(func1)を指定するにはどのような風にしたら良いでしょうか?以下のように 試しましたがいずれも動きません。 function func1(obj,event){・・・} (1)Object.onmouseover=function(){func1(Object.className,event)} //エラー:Object.classNameはNull (2)Object.onmouseover=function(Object.className,event){func1(Object.className,event)} //無反応 (3)Object.onmouseover="func1("+Object.className+",event)"; //onmouseoverでない時にfunc1が呼び出される。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そもそも、第1引数にobjを渡してくれるよう、イベントをハンドルしてくれないのでは。 たいていeventだけを引数とするような。 それに、この場合のobjは、thisでいけそうな。 イベントハンドラの仕様を確認してみては。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
引数で渡すという必要性の問題ですね・・・ イベントは渡すけど、classNameは渡す必要はないですから <script> try{ document.addEventListener ('mouseover',function(e){func(e)},true); }catch(e){ document.attachEvent('onmouseover',function(e){func(e)}); } function func(e){ var t = (e.srcElement || e.target); if(t.nodeName=="A"){ alert("className="+t.className); alert("event="+e); } e.preventDefault(); } </script> <a class="hoge">hoge</a> <a class="hoge fuga">fuga</a> <a>piyo</a>
お礼
ご回答ありがとうございます。確かにeventだけで十分でした。
- babu_baboo
- ベストアンサー率51% (268/525)
//@cc_on document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/ 'mouseover', function( evt ) { var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/; alert( [ e.nodeName, e.className ] ); // a( evt, e.className ); }, false ); //第1引数は、イベントを置きましょう。と教しえていただきました。 ary[ i ].onmouseover = function ( ) { a( this.className, event ); }; ↓ ary[ i ].onmouseover = (function ( that ) { return function ( evt ) { a( that.className, evt || event ); }; })( ary[ i ] ); どうっちみちこんなのは、よく考えると無駄になると思うけど・・・。
お礼
ご回答ありがとうございます。
- kyonn2008
- ベストアンサー率22% (4/18)
#1さんの回答に対する補足にご自身で書かれている通りthis.classNameでいいと思うけど。 何が問題なのん?
お礼
ご回答ありがとうございます。thisで大丈夫でした。
お礼
申し訳ありません。補足します。 ary[i].onmouseover=function(){a(this.className,event)} のa(x,y)は別に定義してあります。 あとanc.lengthはary.lengthの間違いです。
補足
ご回答ありがとうございます。力量不足でちょっとよく分かりません。 <a class="hoge" onmouseover="func1('hoge',event)">・・・</a>というタグが たくさんあるため <a class="hoge">・・・</a> と <script> function ini(){ var ary = new Array(); ary = document.getElementsByTagName('a'); for(var i=0;i<anc.length;i++) { if(ary[i].className != "") { ary[i].onmouseover=function(){a(this.className,event)}←ここの書き方 が不明 }}} </script> <body onload="ini()"> という感じにしたいのです。