私はイベントリスナ登録時の匿名関数に渡す引数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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jquery か javascript で json ...
-
PHPで定義した変数を引数として...
-
javaScriptでグローバル変数に...
-
ローカルのレジストリを読みたい
-
イベントリスナに登録される fu...
-
エクセル2010のvbaについて
-
【javascript】プロパティ?オ...
-
「終了していない文字列型の定...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで ブラウザの閉じる...
-
JavaScriptでテキス...
-
VBScript から JavaScript を呼...
-
「光の三原色」みたいな「三つ...
-
ASP(VBS) ←→ JavaScript の変数...
-
javascriptで最初のところに戻...
-
contenteditableで編集した内容...
-
テキストファイルの更新日時を取得
-
javaで「花が散る」
-
〔Excel:VBA〕マクロの実行が異...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
jquery か javascript で json ...
-
エクセル2010のvbaについて
-
javaScriptでグローバル変数に...
-
画面間でのJavaScrip...
-
文字を移動させその位置を表示...
-
フォルダ内のファイル名を取得...
-
オライリーのプログラミングPHP...
-
ASP.NETでURLにマッピングされ...
-
CSSのクラスを動的に変更 classで
-
イベントevt?evt.target:event....
-
一定時間経つと画像を消す方法
-
クラス デフォルトプロパティの...
-
event.srcElementの動的設定
-
「リンク」と「ハイパーリンク...
-
VBAの引数の指定 カッコとイコ...
-
strictモードでなぜエラーにな...
-
JSの「document.getElementById...
-
Shell.ApplicationでのIEオブ...
おすすめ情報