• ベストアンサー

チェックが重なって連続しているか調べたい

  | 1 | 2 | 3 | 4 | 5 --+--+--+--+--+--- A |   | ■|■ |   |   --+--+--+--+--+--- B |   |   | ■|■ | --+--+--+--+--+--- C |   |   |   |   | --+--+--+--+--+--- D | ■|■ |   |   | --+--+--+--+--+--- E |   |   | ■|■ | --+--+--+--+--+--- 縦横5ずつのチェックボックスがあったとして、 そのチェックが最低1ヶ所は重なって連続しているかどうか (上記の図だと 「A-2,3とBの3,4」か「A-2,3とEの3,4」か 「A-2,3とDの1,2」か「Bの3,4とEの3,4」か 「Dの1,2とA-2,3と、Bの3,4またはEの3,4」 がチェックされていたらOK、 「Dの1,2とBの3,4」か「Dの1,2とEの3,4」 がチェックされていたらダメ) を調べたいのですが、どうして良いかわかりません。 縦の列が何コマチェックされたか調べてみるとか 色々やってみたのですがどうにも上手くいきません。 要領を得ない質問ですみません。 こうやればいいんじゃない? というヒントだけでも結構です。 よろしくお願いいたします!

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

  • ベストアンサー
  • godakaz
  • ベストアンサー率72% (16/22)
回答No.2

<html> <head> <script language="javascript"> <!-- var h = 4; // チェックボックスの列数-1 var v = 5; // チェックボックスの行数 var n = 0; var m = 0; var x = 0; var y = 0; function chk(){ var c = new Array(); var k = 0; for(i=0; v>i; i++){ for(j=0; h>j; j++){ n = Math.floor(5 * i + j); m = n + 1; if((document.f.elements[n].checked)&&(document.f.elements[m].checked)){ c[k] = n; k = k + 1; } } } for(l=0; c.length>l; l++){ x = c[l]; for(o=0; c.length>o; o++){ y = c[o]; if((y==x+6)||(y==x+11)||(y==x+16)||(y==x+21)||(y==x-4)||(y==x-9)||(y==x-14)||(y==x-19)){ alert("hit: " + x + " \& " + y); } } } } //--> </script> </head> <body> <form name="f" id="f"> <table border="1"> <tr> <td> <input type="checkbox" name="0" id="0"><br> 0 </td> <td> <input type="checkbox" name="1" id="1"><br> 1 </td> <td> <input type="checkbox" name="2" id="2"><br> 2 </td> <td> <input type="checkbox" name="3" id="3"><br> 3 </td> <td> <input type="checkbox" name="4" id="4"><br> 4 </td> </tr> <tr> <td> <input type="checkbox" name="5" id="5"><br> 5 </td> <td> <input type="checkbox" name="6" id="6"><br> 6 </td> <td> <input type="checkbox" name="7" id="7"><br> 7 </td> <td> <input type="checkbox" name="8" id="8"><br> 8 </td> <td> <input type="checkbox" name="9" id="9"><br> 9 </td> </tr> <tr> <td> <input type="checkbox" name="10" id="10"><br> 10 </td> <td> <input type="checkbox" name="11" id="11"><br> 11 </td> <td> <input type="checkbox" name="12" id="12"><br> 12 </td> <td> <input type="checkbox" name="13" id="13"><br> 13 </td> <td> <input type="checkbox" name="14" id="14"><br> 14 </td> </tr> <tr> <td> <input type="checkbox" name="15" id="15"><br> 15 </td> <td> <input type="checkbox" name="16" id="16"><br> 16 </td> <td> <input type="checkbox" name="17" id="17"><br> 17 </td> <td> <input type="checkbox" name="18" id="18"><br> 18 </td> <td> <input type="checkbox" name="19" id="19"><br> 19 </td> </tr> <tr> <td> <input type="checkbox" name="20" id="20"><br> 20 </td> <td> <input type="checkbox" name="21" id="21"><br> 21 </td> <td> <input type="checkbox" name="22" id="22"><br> 22 </td> <td> <input type="checkbox" name="23" id="23"><br> 23 </td> <td> <input type="checkbox" name="24" id="24"><br> 24 </td> </tr> </table> <hr> <input type="button" onClick="chk();" value="Check !"> </form> </body> </html>

ryogoku
質問者

お礼

回答していただいてありがとうございました! おかげでとても参考になりました。 大変遅くなって申し訳ありませんm(_ _)m

その他の回答 (1)

  • ryota2
  • ベストアンサー率43% (61/140)
回答No.1

下のスクリプトで5x5のチェックボックスがチェックされているかどうかの真偽値が配列に入れられます。 この後if文で処理を書いたらいいでしょう。 算数が苦手な上、根性が無いのでそこまで作れませんでした。 ためにならない答えですみません。 <html> <head> <title>チェックボックスのチェックのチェック</title> <script type="text/javascript"><!-- function myCheck(){ checks=new Array(); checks.push(document.myform1.a1.checked); checks.push(document.myform1.a2.checked); checks.push(document.myform1.a3.checked); checks.push(document.myform1.a4.checked); checks.push(document.myform1.a5.checked); checks.push(document.myform1.b1.checked); checks.push(document.myform1.b2.checked); checks.push(document.myform1.b3.checked); checks.push(document.myform1.b4.checked); checks.push(document.myform1.b5.checked); checks.push(document.myform1.c1.checked); checks.push(document.myform1.c2.checked); checks.push(document.myform1.c3.checked); checks.push(document.myform1.c4.checked); checks.push(document.myform1.c5.checked); checks.push(document.myform1.d1.checked); checks.push(document.myform1.d2.checked); checks.push(document.myform1.d3.checked); checks.push(document.myform1.d4.checked); checks.push(document.myform1.d5.checked); checks.push(document.myform1.e1.checked); checks.push(document.myform1.e2.checked); checks.push(document.myform1.e3.checked); checks.push(document.myform1.e4.checked); checks.push(document.myform1.e5.checked); /* 配列内インデックス  |1|2|3|4|5| --+--+--+--+--+--+ A|0|1|2|3|4| --+--+--+--+--+--+ B|5|6|7|8|9| --+--+--+--+--+--+ C|10|11|12|13|14| --+--+--+--+--+--+ D|15|16|17|18|19| --+--+--+--+--+--+ E|20|21|22|23|24| --+--+--+--+--+--+ */ } //--></script> </head> <body> <form action="#" name=myform1> <table border=1> <tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr> <tr><th>A</th><td><input type=checkbox name=a1></td><td><input type=checkbox name=a2></td><td><input type=checkbox name=a3></td><td><input type=checkbox name=a4></td><td><input type=checkbox name=a5></td></tr> <tr><th>B</th><td><input type=checkbox name=b1></td><td><input type=checkbox name=b2></td><td><input type=checkbox name=b3></td><td><input type=checkbox name=b4></td><td><input type=checkbox name=b5></td></tr> <tr><th>C</th><td><input type=checkbox name=c1></td><td><input type=checkbox name=c2></td><td><input type=checkbox name=c3></td><td><input type=checkbox name=c4></td><td><input type=checkbox name=c5></td></tr> <tr><th>D</th><td><input type=checkbox name=d1></td><td><input type=checkbox name=d2></td><td><input type=checkbox name=d3></td><td><input type=checkbox name=d4></td><td><input type=checkbox name=d5></td></tr> <tr><th>E</th><td><input type=checkbox name=e1></td><td><input type=checkbox name=e2></td><td><input type=checkbox name=e3></td><td><input type=checkbox name=e4></td><td><input type=checkbox name=e5></td></tr> <tr><td colspan=6 align=center><input type=button value="  Check  " onClick="myCheck()"></td></tr> </table> </form> </body> </html>

ryogoku
質問者

お礼

回答していただいてありがとうございました! おかげでとても参考になりました。 大変遅くなって申し訳ありませんm(_ _)m

関連するQ&A