• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptのイベントについて)

JavaScriptのイベントについて

このQ&Aのポイント
  • JavaScriptを使ってページのウィンドウ上でダブルクリックするとテキスト1の文字列が変更されてしまう問題について
  • addEventListenerの使い方についての質問。ページがロードされると同時にテキスト部分が変更されてしまう原因を教えて欲しい
  • JavaScriptでダブルクリックイベントを処理するためにaddEventListenerを使っているが、テキストがロード時に変更されてしまう問題が発生している

質問者が選んだベストアンサー

  • ベストアンサー
  • gorusura
  • ベストアンサー率59% (25/42)
回答No.3

おすすめはこれです。 <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)

回答No.4

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)
回答No.2

イベントを渡したりすることを考えると無名関数を使ったほうがよいかも <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)
回答No.1

addEventListenerの第2引数で「addEL()」と記述すると addEL関数を実行して、その戻り値を、第2引数へ渡す事になってしまいます。 addELをイベントリスナーとして追加するなら、括弧()は要りません。

関連するQ&A

専門家に質問してみよう