質問: javascriptに詳しい方ぜひ教えていただきたいですが、下記のコードを個別指定ではなく、一つに統合するのにどう書けばよろしいでしょうか。 具体的にいうと`getElementById`で各IDを同時に指定したいのですが、if文とかorとかいろいろ書いてみたのですが、作動せず難しいです。 ``` document.getElementById("aform").onsubmit=function(){return CHECK("a");}; document.getElementById("bform").onsubmit=function(){return CHECK("b");}; document.getElementById("cform").onsubmit=function(){return CHECK("c");}; document.getElementById("dform").onsubmit=function(){return CHECK("d");}; document.getElementById("aform2").onclick=function(){BTN=2;}; document.getElementById("bform2").onclick=function(){BTN=2;}; document.getElementById("cform2").onclick=function(){BTN=2;}; document.getElementById("dform2").onclick=function(){BTN=2;}; ``` ※BTN=2はエラー関連の設定です。 よろしくお願いいたします。 早速のご回答ありがとうございます。 できれば、下記のように書きたいのですが、なぜなら、複数あるHTMLのほうには「aform」、「bform」、「aform2」と「bform2」までしかないものがあります。 いかがでしょうか。教えて頂けたらありがたいです。 ``` function CHECK(ELE){ if(document.getElementById(ELE+"form").onsubmit=function(){return CHECK("ELE"); document.getElementById(ELE+"form2").onclick=function(){BTN=2; } ```
回答: `getElementById`は、IDを指定してエレメントを得るメソッドで、 IDはページでユニークですから、複数のIDを指定するようにはなっていませんので、 「getElementByIdで同時多数取得」ということはできません。 なので指定したい要素を配列にしておいて`for`ループで逐次実行するような処理が必要です。 ちなみに jQueryのようなライブラリを使うことで、後半部分は ``` $("#aform2,#bform2,#cform2,#dform2").click(function () { BTN=2; }); ``` のようにまとめることができます。 前半部分は、IDを同時指定しても実行する内容が異なるのでそのまままとめることはできません。 (IDを取り出して先頭の文字でCHECKを呼び出すというように変更する必要があります。)