- ベストアンサー
JavaScriptのイベントについて
- JavaScriptを使ってページのウィンドウ上でダブルクリックするとテキスト1の文字列が変更されてしまう問題について
- addEventListenerの使い方についての質問。ページがロードされると同時にテキスト部分が変更されてしまう原因を教えて欲しい
- JavaScriptでダブルクリックイベントを処理するためにaddEventListenerを使っているが、テキストがロード時に変更されてしまう問題が発生している
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
おすすめはこれです。 <body> <a id="id1">テキスト1</a> <script type="text/javascript"><!-- var addEvent; if(window.addEventListener) addEvent=function(element,type,listener,useCapture){ element.addEventListener(type,listener,useCapture); }; else if(window.attachEvent) addEvent=function(element,type,listener){ element.attachEvent('on'+type,listener); }; else addEvent=function(element,type,listener){ var temp='on'+type; if(temp in document)element[temp]=listener; }; var i=document.getElementById('id1'); function addEL(){ i.innerHTML='addEventListener'; } addEvent(document,'dblclick',addEL,false); //--></script> </body>
その他の回答 (3)
- babu_baboo
- ベストアンサー率51% (268/525)
var i = document.getElementById ("id1"); document.addEventListener("dblclick", addEL, !1); function addEL (){ i.innerHTML="addEventListener!"; } しようする へんすうの まえには、var をつけましょう みじかく かくのは すきですが、もし !1 が、るーぷの なかに ある ばあいは、まいかい ひょうか されるますよ。 この ばあい、へんすう i は、ぐろーばるへんすうです。 ぐろーばるへんすうの しようは、どこかで かきかえられるかも しれないので、おすすめ できません。 もし、それがいやで いかのように したと します (function () { var i = document.getElementById ("id1"); document.addEventListener("dblclick", addEL, false); function addEL (e) { i.innerHTML="addEventListener!"; // このかんんすうのなかから、i をさんしょうできますが、その i が、html ようそをほじしているから } }) (); しかし、これは メモリーリークパターンになります。 (げんざいは、かいしょうされているものもあるそうですが) この かんすう addEL の だい1ひきすうに わたされる e (いべんとおぶじぇくと)から たくさんのじょうほうを しる ことが できます。 その かんすうの なかで、いかの ように すれば、document さえ しゅとく できます。 function addEL (e) { var doc = (e.target||e.srcElement).ownerDocument; var i = doc.getElementById ("id1"); } -- こじんてきな いけん。 var addEvent = function () ~ ですが、こうほうごかんを きにする あまり、attachEvent では、useCapture が つかえず、 var temp='on'+type; これを つかう ばあいは、ふくすうの とうろくも できず、 おなじかんすうめいでありながら おなじ きのうが いじできない ものに なります。 element が document なら まだ よいと おもいますが、とくていの HTML ようそなら メモリーリークパターン に みえて(かってなおもいこみです) さむけが します(げんざい、かぜひいている せいも あり)
- yambejp
- ベストアンサー率51% (3827/7415)
イベントを渡したりすることを考えると無名関数を使ったほうがよいかも <a id=id1>テキスト1</a> <script> document.addEventListener("dblclick", function(e){addEL(e)}, false); function addEL(e){ alert("イベントタイプ:"+e.type); alert("ターゲット:"+(e.target||e.srcElement).nodeName); i = document.getElementById("id1"); i.innerHTML="addEventListener!"; } </script>
- ibara994
- ベストアンサー率75% (9/12)
addEventListenerの第2引数で「addEL()」と記述すると addEL関数を実行して、その戻り値を、第2引数へ渡す事になってしまいます。 addELをイベントリスナーとして追加するなら、括弧()は要りません。