<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>イベント情報の取得</title>
</head>
<body>
<script type="text/javascript">
<!--
// ページのロード時に呼び出される関数initをセット
window.onload=init;
// ページのロード時に呼び出される関数
function init(){
// onclickイベントハンドラを定義
document.getElementById("txt").onclick=msg;
}
// onclickイベントハンドラ関数
function msg(evt){
// W3C DOMとIEの両方のイベントオブジェクトに対応
evt = (evt) ? evt : ((event) ? event : null);
alert(evt.type+"されました");
}
//-->
</script>
<div id="txt">クリックしてください</div>
</body>
</html>
上記のコードで【MozillaやOperaなどのブラウザでは、イベントハンドラ関数を設定した場合にも、関数の引数としてイベントオブジェクトが渡される】とのことですが、イベントハンドラ関数msgに渡されているevt【function msg(evt){】はいきなり出て、何を意味しているのかよくわかりません。
このコードを見て推測できる方、アドバイスをお願い致します。
No.2ベストアンサー
- 回答日時:
>function msg(evt)
説明どおり。MozillaやOperaではイベントに関する各種情報=イベントオブジェクトを引数として渡してきます、それを受取るべくevtという名前の器(変数)を用意します。もちろん関数内での宣言ですから名前は何でも(evtでなくても)かまいません。
渡されたイベントオブジェクトを参照する事でイベントの種類や発生元(クリックならクリックしたオブジェクト)等々の情報が得られます。
>evt = (evt) ? evt : ((event) ? event : null);
IEではイベントハンドラの引数は空です。代わりにwindow.eventというグローバルオブジェクトにイベント情報が格納されています。
引数(evt)が得られてなければevtという名前でeventを参照できるようにします。
これでevt.typeでIEでもMozillaでも同じ変数で発生したイベントのタイプ(この例では"click"です)を参照できるようになります。
なお、イベントオブジェクト内のプロパティにも違いがあるので、これだけでブラウザの差異が完全に吸収されるわけではありません。
No.1
- 回答日時:
>evt = (evt) ? evt : ((event) ? event : null);
これの少し前を参照
>function msg(evt){
ただの変数名
function での構文による括弧内の名前が何であるのか、もう一度文法を確認したら良いんじゃない?
いきなりもなにもfunctionっていきなり出てくるものだし。
少しくらい流れを追おうとしようよ。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
フォルダ内のファイル名を取得...
-
Shell.ApplicationでのIEオブ...
-
エクセル2010のvbaについて
-
ASP.NETでURLにマッピングされ...
-
正整数の半角数字かどうか判定する
-
VB.NET2003 テキストボックスに...
-
フォルダを自動で開く
-
PHP処理実行後のページの遷移に...
-
innerHTMLなどの反映タイミング
-
JSPの処理の途中で、JavaScript...
-
VBA ステータスバー DoEvents
-
onload onunload onbeforeunloa...
-
if(1){...}とはどういうことで...
-
gas 全角数字を半角数字に変換
-
【JavaScript】いまどき未対応...
-
ページを一回だけリロードさせ...
-
JavascriptでのExcel起動について
-
javascriptからサーバサイドの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webページ中の javascript をVB...
-
ローカルのレジストリを読みたい
-
エクセル2010のvbaについて
-
フォルダ内のファイル名を取得...
-
jquery か javascript で json ...
-
タブブラウザで focus() を実...
-
イベントをつかってコールバッ...
-
Shell.ApplicationでのIEオブ...
-
「リンク」と「ハイパーリンク...
-
event.srcElementの動的設定
-
evtとは
-
for...inのプロパティ取り出し...
-
ASP.NETでURLにマッピングされ...
-
VBAの引数の指定 カッコとイコ...
-
イベントの関数について、よく...
-
Arrayオブジェクトとforms配列
-
JavaScriptでオブジェクトを識...
-
イベントevt?evt.target:event....
-
画面間でのJavaScrip...
-
Javascriptの正規表現で変数を...
おすすめ情報