以下の理解で合っているのでしょうか?
よくイベントの取得で
エレメント.onclick = function(evt){
var e = evt?evt.target:event.srcElement;
}
でeにイベントオブジェクトの発生元要素をセットしているのを見かけますが、
これは、ブラウザーの違いの吸収なのでしょうか?
firefoxでは、イベントハンドラー関数にイベントオブジェクトが渡されるので、渡されたイベントオブジェクトよりevt.targetで発生元要素をセットし、一方IEでは、eventという名前のオブジェクトが存在している(?)ので、イベントハンドラー関数にイベントオブジェクトが渡されず、event.srcElementで発生元要素をセットする。
※Opera、Safariは何でも良い
IEの場合、後から、イベントが追加されたらeventオブジェクトはどうなるのでしょうか?ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
No.1ベストアンサー
- 回答日時:
> ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
attachEvent() を使えば、複数のイベントハンドラを定義できそうです。(未検証)
また、attachEvent() の第一引数からイベントオブジェクトを取得できる、とbabu_babooさんに教わりました。
http://okwave.jp/qa5081024.html?ans_count_asc=1
ただ、attachEvent は実行順が不定という欠点があるので、現実的には「出来ない」という結論になると思います…。
addEventListenerとattachEventでは実行される順番が違う at HouseTect, JavaScripter Blog
http://hisasann.com/housetect/2008/09/addeventli …
IEのイベント実行順序は不定? - inamenaiの日記
http://d.hatena.ne.jp/inamenai/20080915/p1
IEが addEventListener() に対応してくれればいいのですが…。
この回答への補足
ところで、think46様の「イベントリスナに登録される function(e){} の "e" はeventオブジェクト?」
http://okwave.jp/qa5075946.html
の中で、前から気になってて、ちょっと解らないところがあるのですが、
質問に関係ないjavascriptの基本的な事かも知れませんが、
匿名関数を
(function(str){
alert(str);
})('Hello');
というふうに書いていますが、
なぜ、後ろの()の中身が前の()の中の関数の引数に渡されるのでしょうか?
これは、
エレメント.onclick = (function(e){
alert(e); //eはalertできませんが
})();
と
エレメント.onclick = function(e){
alert(e);
}
と書くのは同じですか?
No.4
- 回答日時:
#1です。
> なぜ、後ろの()の中身が前の()の中の関数の引数に渡されるのでしょうか?
匿名関数(無名関数)に関しては、私も完全に理解できているわけではないので、私の理解している範囲での説明になりますが…。
まず、名前付きの関数定義をしてみます。
-------
function test(str){
alert(str);
}
test('Hello');
-------
関数名 "test" を取り除きます。
-------
function(str){
alert(str);
}
('Hello');
-------
このままでは、エラーになります。
function部分を括弧で括り、エラーを回避します。(どういう理屈かはわかりません)
-------
(function(str){
alert(str);
})
('Hello');
-------
改行を取り除きます。
-------
(function(str){
alert(str);
})('Hello');
-------
「なぜfunctionを括弧でくくるのか?」
この点はずっと疑問に思っていて、いつか質問しようと思っていました。
いい機会なので質問してみます。
匿名関数の定義と実行 - 昼間のメモ
http://blog.goo.ne.jp/hiuchida/e/431b5beb4adeb31 …
匿名関数と (function(){ ... })(); について : JavaScript 備忘録
http://blog.livedoor.jp/jsmemo/archives/767707.h …
エレガントな JavaScript を作成するための関数型プログラミングの使用
http://www.ibm.com/developerworks/jp/web/library …
JavaScript講座 : 関数の定義
http://www.openspc2.org/JavaScript/kouza2007/fun …
代わりに別途質問していただいてありがとうございました。
その解答をみて納得できたような気がします。
functionもオブジェクトであるから、それを踏まえて
var hoge = function(str){alert(str);};
hoge("Hello");
と
(function(str){alert(str);})('Hello');
を良く眺めると同じに見えました。
No.3
- 回答日時:
document.onclick = (function(INT) {
return function(e) {
var tmp = INT(1.41421356237);
var e = e ? e.target: event.srcElement;
alert([tmp, e.tagName]);
};
})(Math.floor);
ごみか?
No.2
- 回答日時:
>これは、ブラウザーの違いの吸収なのでしょうか?
じぶんてきには。そのつもり。
うるおぼえなのでくわしいせつめいは、するーします。
「いべんとばぶりんぐ」で、けんさくすればかいけつのいとぐちが?
http://www.tagindex.com/kakolog/q4bbs/1601/1871. …
ここをよんで、いべんとは、おおもとで、かんしするだけで
いいじゃん!ってことで、じぶんでは、documentのいべんとを
かんしすることがおおいです
IEのいべんとは、ぐろーばるなので、そのときのいべんとが、
さんしょうしたときに、それとはかぎらない。
なので、attachEventをつかったり・・・。
ここのいたでは、わかりやすさをゆうせんさせているひとが
おおいのか(?)そのかきかたが、ふきゅうしないというか・・・。
じぶんで、じしんをもってせつめいできないのがいたい!?
だからいつまでたっても、かいとうのこーどをとうこうするときは、
「いっぱんじん」でなおかつ、「さんこういけん」なんだよね~^^;
「せんもんか」といえるひとたちの、いけんをまとう!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- その他(趣味・アウトドア・車) 寝台特急カシオペアについて 2 2023/06/10 13:59
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- その他(プログラミング・Web制作) Pythonのオブジェクトの関数について 2 2023/05/11 19:15
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- 英語 atが1文で二回出てくるのはおかしいですよね。すっきりした英文にしたいです。教えてください。 1 2023/03/24 20:20
- その他(プログラミング・Web制作) LINEアプリの開発について。オブジェクトの名前が教えてください 1 2023/02/23 09:31
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
関連するカテゴリから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....
おすすめ情報