• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[JS] eventListener)

[JS] eventListenerで要素の表示非表示を切り替える

このQ&Aのポイント
  • GMのスクリプトで、ボタンクリックにより、任意のテキストの非表示を切り替える機能に取り組んでいます。
  • クリックにより eventListener で関数を呼び出して、そのときの引数で style.display = "block" と "none" を切り替えたいのですが、クリックにてイベントがトリガされず、ページロード時に関数が呼ばれてしまい、非表示の状態でロードが完了してしまいます。
  • クリックによるイベントのトリガについて、初期ロード時に無駄な関数 call をおこさない方法について、ご指摘いただけないでしょうか。

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

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

JavaScript には「関数オブジェクト」なる存在があります。 addEventListener の第二引数は、このオブジェクトを指定しなければいけません。 関数オブジェクトの書き方 var funcObject = function(){ 処理内容 }; ゆえに 誤) addInput1.addEventListener("click",hyoji(0), false); 正) addInput1.addEventListener("click", function(event){ hyoji(0) }, false); 個人的には、この様に書けば理解しやすいのでお勧めします var funcObject = function(event){ hyoji(0) }; addInput1.addEventListener("click", funcObject, false); 余談ではありますが、以下の処理は addEventListener と被っていますので削除すべきかと var addOnclick1 = document.createAttribute('onclick'); addOnclick1.nodeValue = "hyoji(0)"; addInput1.setAttributeNode(addOnclick1); 余談の余談ですが、onclick ならもっと良い書き方があります addInput1.onclick = function(){ hyoji(0) };

jussmen_1979
質問者

お礼

有り難うございました。 余談についても、参考にさせていただきました。

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

 addInput1.addEventListener("click",hyoji(0), false); とすると、リスナー登録時にhyoji(0)が呼ばれてしまいます。  addInput1.addEventListener("click", function(){hyoji(0);}, false); としてください。

jussmen_1979
質問者

お礼

有り難うございました。

関連するQ&A