![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
よく、HTMLに
<img src="yyy.gif" onMouseover="this.src='xxx.gif'">
というふうにイベントハンドラを設定するのを見かけますが、
<script>タグ内で
document.onclick = 関数名;
となっているのもあります。
後者の方が、スマートのような気がするのですが、その書き方とか、仕様をしっかり理解できてないようなので質問します
おそらく、これに限らず基礎的なことだと思います
1、
document.onclick = の後に指定できるのは、関数名の他に何があってどう書くのか?
2、
document.onclick = funcEx();
としないで
document.onclick = funcEx;
とするのはなぜか?
引数は設定できないのか?
3、
<script>内から、指定した要素のイベントを制御する方法がほかにあれば
教えてください
以上、どれかひとつでも、複数でもいいので、回答もらえるとありがたいです
No.2ベストアンサー
- 回答日時:
1)
XXXX.onclick=function(){…}
というように名前のない関数(イベントだけで使われるので、特に名前が必要ない)が書けます。(関数リテラルといいます)
2)
関数オブジェクトにカッコを付けると関数呼び出しになります。
引数は関数定義の方で設定しておきます。
イベントハンドラへの登録なので、この時には引数を設定する意味はありません。
イベントで呼び出される関数に引数が必要かどうかは、ブラウザによっても違います。ネットスケープ系だとイベントを引数で受けて、例えば押されたキーなどを取得することができます。IEでは、イベントは、イベントハンドラないでwindow.eventを使用するので、引数では受けません
(ポインタといっていいかどうかは微妙ですが、javascriptではポインタ型のタイプはありません、関数オブジェクトです)
3)IEの場合
<SCRIPT FOR="test" EVENT="onmouseover" type="text/javascript">
window.event.srcElement.style.fontWeight="bold";
</SCRIPT>
<SCRIPT FOR="test" EVENT="onmouseout" type="text/javascript">
window.event.srcElement.style.fontWeight="normal";
</SCRIPT>
<a href="#" ID="test">test</a>
のように、IDで指定したモノのイベントの種類を指定してスクリプトを設定することができます。
No.1
- 回答日時:
参考URLの「イベントハンドラをHTMLから分離する」の各記事が参考になるかと思います。
他は参考URLにあると思うので2についてだけ。
document.onclick = funcEx();
これでは、この行を実行するときにfuncExを呼び出して実行し、その返値をonclickに代入する命令になってしまいます。
document.onclick = funcEx;
()を省略する事で関数へのポインタを表します。これをonclickに代入します。
参考URL:http://allabout.co.jp/career/javascript/library/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- 数学 複素関数にロピタルの定理を使おうとしている回答者は、複素関数論はおろか微積分学もよく分かっていない、 5 2022/12/28 18:02
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- その他(パソコン・周辺機器) 低価格な入札。問題はないのですか? 2 2022/12/25 12:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excle VBA とweb上の検索を利用...
-
JavaScript window.openで開く...
-
FireFoxのjavascriptで自動でキ...
-
DOM要素を削除しても、イベント...
-
compatModeとは?
-
クリッカブルマップのリンク部...
-
VBAでIEのボタンを押してメッセ...
-
XMLでのAttributeを持ったNode...
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
idを使わずにonclickで自身の要...
-
google apps scriptの終了のさせ方
-
翌月を取得するGASが分かりません
-
JavaScriptを使って毎日決まっ...
-
functionから別のfunctionを実...
-
javascriptでiframeのURL変更は?
-
スマフォではボタンを表示させ...
-
C# 演算 奇数と偶数 表現の仕方
-
undefinedを表示させない方法は...
-
Linux バイナリ実行できない "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FireFoxのjavascriptで自動でキ...
-
Latexに関する質問です。
-
DOM要素を削除しても、イベント...
-
XMLでのAttributeを持ったNode...
-
TexでΣの添え字の位置直し
-
JavaScript window.openで開く...
-
Null またはオブジェクトではあ...
-
javascriptの基本的なことだと...
-
iframeのソースを取得したい
-
選択肢によってラジオボタンを...
-
excle VBA とweb上の検索を利用...
-
文字を一文字ずつ表示
-
ラジオボタンでreadonlyの切替え
-
responseTextについて
-
VBAのIE操作でframe構造のサイ...
-
サブウィンドウからのスタイル...
-
JavaScriptのdocument.all("変...
-
オンマウスについて
-
要素のリサイズをひろい、他の...
-
クリッカブルマップのリンク部...
おすすめ情報