• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:質問Aと質問Bを選択して、メッセージを出したい。)

複数のJavaScript関数を同時に使用する方法

このQ&Aのポイント
  • 質問AとBを選択してメッセージを表示するプログラムを作成中です。しかし、functionで同時に複数の関数を使用できない点が問題です。各関数はif文を含んでおり、メッセージの挙動を制御しています。どうすれば関数を二つ同時に使えるかが知りたいです。
  • 質問Aと質問Bの選択によって異なるメッセージを表示するプログラムをJavaScriptで作成していますが、複数の関数を同時に使う方法がわかりません。それぞれの関数にif文が含まれており、メッセージ表示の動作を調整しています。二つの関数を同時に使用する方法を教えてください。
  • 特定の選択肢に基づいてメッセージを変えるJavaScriptプログラムを作成中ですが、functionで複数の関数を同時に使用するのが難しいです。この制限を克服するためにどうすれば良いでしょうか?関数内にはif文があり、メッセージの挙動が操作されています。

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

  • ベストアンサー
回答No.2

<script language="javascript" type="text/javascript"> function selectboxChange101() { judge(); } function selectboxChange111() { judge(); } function judge() { /* この場合は、varではなくletを使う。*/ let val101 = document.forms.form101.Select101.value; let val111 = document.forms.form111.Select111.value; /* そもそも両方が当てたら、メッセージを出すのなら、outputは1つでいいのでは? */ let target = document.getElementById("output111"); if ((val101 == "要素101")&&(val111 == "要素111")) { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> ----------------- selectboxChange101が呼ばれた時まだ、 selectboxChange111は呼ばれていないので、 judgeの変数が作られていない事があるので、 だったら、judge内でまとめた方が、シンプル。 事実上 <select id="Select111" onchange="judge();"> でもいいほど(何も書いてないので) <div id="output101"></div> <div id="output111"></div> 両方があってたらメッセージを出したい?って 雰囲気なのであれば、片方だけでいいので。 どちらかを削除してOKですよ。 とりあえず、やりたいのは、こう言う事で、あってますか?

sembokulove
質問者

補足

ありがとうございます。 プルダウン2つ選択でメッセージを送信するというところまで行きました。 ただ、欲を言えば、メッセージを複数流したいので、 配列を使うか、innnerhtmlを2回使う方法をご教授いただけたら幸いです。 ただし、script内は省略なしです。

その他の回答 (2)

回答No.3

>ただ、欲を言えば、メッセージを複数流したいので、 >配列を使うか、innnerhtmlを2回使う方法をご教授いただけたら幸いです。 単に2回書けばいいだけですよ。(当然3個以上でも同じ)

回答No.1

>関数を2つ同時に使うとしたらどのようにしたらいいですか。 同時に使う意味はありません。 同時にはフォームはどちらかにしかイベントは発生しません。 次に関数は「関数を呼ぶこともできる」 というのを利用しましょう。 <script language="javascript" type="text/javascript">   /* 関数の外に変数 */   var ここで値を覚えられるようにしてしまいます。 function selectboxChange101() { /* 101固有の判定 */ judge(); } function selectboxChange111() { /* 111固有の判定 */ judge(); } function judge() {    /* ここで値を覚えられるようにしてしまいます。*/ /* の変数のチェック、これで、101/111両方をテストできますから */ } </script> こうしてしまえば、規模が大きくなっても judgeのみで、バリデーションできるので、 効率も上がりますし、 一か所に集まるので、バグも発生しにくいので 良いかとは思います。 ただし、質問的には「同時」という分があったものの、 2つのFORMはそもそも同時にはリスナーは動かないので、 それ自体は考えなくて良い気はします。

sembokulove
質問者

補足

すみません、教えられたとおり、 やってみたんですけど、どこがおかしいですか。 もしおかしかったら、javascriptの部分を全部書いて出ないしていただけたらと思います。ヽ(`Д´)ノプンプン 以下はjsの文章です。 <script language="javascript" type="text/javascript"> function selectboxChange101() { var val101 = document.forms.form101.Select101.value; var target = document.getElementById("output101"); judge(); } function selectboxChange111() { var val111 = document.forms.form111.Select111.value; var target = document.getElementById("output111"); judge(); } function judge() { if ((val101 == "要素101")&&(val111 == "要素111")) { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script>

関連するQ&A