

javascriptに詳しい方ぜひ教えていただきたいですが、下記のコードを個別指定ではなく、一つに統合するのにどう書けばよろしいでしょうか。

具体的にいうと`getElementById`で各IDを同時に指定したいのですが、if文とかorとかいろいろ書いてみたのですが、作動せず難しいです。

[code]

    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;};
    
[/code]

※BTN=2はエラー関連の設定です。

よろしくお願いいたします。

早速のご回答ありがとうございます。  
できれば、下記のように書きたいのですが、なぜなら、複数あるHTMLのほうには「aform」、「bform」、「aform2」と「bform2」までしかないものがあります。  
いかがでしょうか。教えて頂けたらありがたいです。

[code]

    function CHECK(ELE){
        if(document.getElementById(ELE+"form").onsubmit=function(){return CHECK("ELE");
           document.getElementById(ELE+"form2").onclick=function(){BTN=2;   
    }
    
[/code]


CC BY-SA 3.0
2015-08-17T13:25:49.323
14533
2015-08-21T13:37:28.397
2015-08-18T01:24:36.193
7831
10961
question
javascript
getElementByIdで同時多数取得


`document.querySelectorAll("form[id*='form']")`  
とするとidに`form`という文字列が含まれるform要素の配列が取れると思います。

また、  
`document.querySelectorAll("*[id*='form']")`  
というふうに要素を指定している部分を`*`にすると、すべての要素の中でidに`form`が含まれているものの配列を取ることができます。


CC BY-SA 3.0
2015-08-17T13:39:26.710
14535
2015-08-21T13:37:28.397
2015-08-21T13:37:28.397
5246
5246
14533
answer


`getElementById`は、IDを指定してエレメントを得るメソッドで、  
IDはページでユニークですから、複数のIDを指定するようにはなっていませんので、  
「getElementByIdで同時多数取得」ということはできません。

なので指定したい要素を配列にしておいて`for`ループで逐次実行するような処理が必要です。

ちなみに  
jQueryのようなライブラリを使うことで、後半部分は

[code]

    $("#aform2,#bform2,#cform2,#dform2").click(function () {
      BTN=2;
    });
    
[/code]

のようにまとめることができます。  
前半部分は、IDを同時指定しても実行する内容が異なるのでそのまままとめることはできません。  
（IDを取り出して先頭の文字でCHECKを呼び出すというように変更する必要があります。）


CC BY-SA 3.0
2015-08-17T13:49:08.343
14536
2015-08-17T13:49:08.343
5044
14533
answer


そもそものHTMLの原理として、そのような目的では **idではなくclassを使うべき** です。

idというのは個々の要素のそれぞれに全く別個の振る舞いを与えるときに使うもので、そもそもの目的が異なりますから、そのようなコードを書きにくいのは当然です。classを使えば`querySelectorAll`でいとも容易く実現可能なのに、idでやろうとするから面倒になっているのです。

ただし、どうしても`getElementById`でidにもとづいて処理しなければならない何らかの理由が絶対にないとは言い切れないような気もしないでもないような可能性は否定しきれないと言えないこともありません。その場合は、すべての要素をひとつひとつ調べ、正規表現などで期待するパターンのidかどうかを個々に判別して行くしかありません。ただし私は`getElementById`を使うという方針が根本的に誤っていると思います。

この質問は、「目の前にスプーンとフォークがあるが、スプーンでスパゲッティを食べるにはどうすればいいか」と訊いているようなものです。問題の本質を考えるなら、適切な回答は「フォークで食え」であって、「スプーンの先端をフォーク状に削りとればスプーンでも食えるよ」というような回答は意味がありません。


CC BY-SA 3.0
2015-08-18T03:57:45.360
14563
2015-08-18T16:18:42.230
2015-08-18T16:18:42.230
10330
10330
14533
answer