私はイベントリスナ登録時の匿名関数に渡す引数eの意味が今まで理解できていませんでした。
最近、下記コードを実行することで、
<script type='text/javascript'>
window.addEventListener ('click', function(e){
console.info(e);// 引数をコンソール表示 (要Firebug)
for (p in e){
console.info(p + ' = ' + e[p]);// プロパティを列挙
}
}, false);
</script>
「eventオブジェクトを渡しているらしい」と朧気ながら理解できました。
ただ、疑問点も残ります。
私の理解では、匿名関数は
(function(str){
alert(str);
})('Hello');
のように明示的に引数を渡さなければ、引き渡された値は undefined となるはずでした。
変数eの値はどこから出現したのでしょうか?
そもそも、変数eはeventオブジェクトなのでしょうか?
No.1ベストアンサー
- 回答日時:
イベントハンドラにはイベントオブジェクトが自動的に渡されます。
https://developer.mozilla.org/ja/DOM/event
IEではwindowオブジェクトにeventが括り付けられていて参照可能となっているので、(たしか)このような動作はしませんね。
参考URLをありがとうございます。
> イベントハンドラにはイベントオブジェクトが自動的に渡されます。
下記を読み、関数の第一引数にeventオブジェクトが渡される事がわかりました。
-----
イベントハンドラは DOM のさまざまな element に 関連付けられる可能性があります。
イベントが発生したとき、event オブジェクトが動的に生成され、そのイベントを処理することになっているイベントリスナに逐次的に渡されます。このとき、DOM Event インターフェースは、イベントハンドラの関数の中で、その第一引数としてアクセス可能です。
-----
> IEではwindowオブジェクトにeventが括り付けられていて参照可能となっているので、(たしか)このような動作はしませんね。
IEでは window.event にイベントオブジェクトが入るのですね。
下記コードでIEでも動作させることが出来ました。
------
<p id='test'>test</p>
<!-- IEには window.onclick がないので、bodyを空にしないために適当な要素を入れる -->
<script type='text/javascript'>
(function(){
if(window.addEventListener){
window.addEventListener ('click', function(e){
console.info(e);
for (p in e){
console.info(p + ' = ' + e[p]);
}
}, false);
} else if(window.attachEvent){
document.body.attachEvent('onclick',function(){
alert('Hello!');
console.info(window.event);
for(p in window.event){
console.info(p + ' = ' + window.event[p]);
//console.info(p =);
}
});
}
})();
</script>
------
おかげさまでeventオブジェクトについてよくわかりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面間でのJavaScrip...
-
タブブラウザで focus() を実...
-
「リンク」と「ハイパーリンク...
-
javascriptで最初のところに戻...
-
デザイン時のVisible=Falseは実...
-
以下のコードを実行しても、オ...
-
JavaScriptで ブラウザの閉じる...
-
PowerPointで時計表示
-
初心者です。gulpでコンパイル...
-
onload onunload onbeforeunloa...
-
VBAによる第3、4水準文字の判定...
-
VBScript から JavaScript を呼...
-
ホームページビルダーでスクリ...
-
Win版IllustratorCS3でJavascri...
-
ページ遷移時にアコーディオン...
-
JSPの処理の途中で、JavaScript...
-
VB.NETからWEBブラウザの操作に...
-
ブラウザからエクセルを開く方法
-
C#でボタン名を変更しても動く
-
if(1){...}とはどういうことで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
JavaScriptで複数のプロパティ...
-
evtとは
-
エクセル2010のvbaについて
-
クラス デフォルトプロパティの...
-
javaScriptでグローバル変数に...
-
フォルダ内のファイル名を取得...
-
jquery か javascript で json ...
-
JSの「document.getElementById...
-
一定時間経つと画像を消す方法
-
ASP.NETでURLにマッピングされ...
-
文字を移動させその位置を表示...
-
javascriptにてXMLの読み込み
-
CSSのクラスを動的に変更 classで
-
Shell.ApplicationでのIEオブ...
-
画面間でのJavaScrip...
-
イベントリスナに登録される fu...
-
フォームタグのinputタグ内にカ...
-
イベントevt?evt.target:event....
おすすめ情報