質問させてください。
大分類の項目が3つ、1つの大分類に対しての小分類の項目が5つあり、それぞれの項目にチェックボックスをつけています。
↓□がチェックボックスだとします。
□大分類1 □小分類1-1 □小分類1-2 ・・・小分類1-5
□大分類2 □小分類2-1 □小分類2-2 ・・・小分類2-5
□大分類3 □小分類3-1 □小分類3-2 ・・・小分類3-5
上記のようなフォームをつくり、大分類1のチェックボックスにチェックを入れると、小分類1-1 から 小分類1-5まで自動でチェックが入るスクリプトを作りたいのですが。。。
たとえば、大分類1をチェックしたとき用のファンクション、大分類2をチェックしたとき用のファンクション、大分類3をチェックしたとき用のファンクション。。。と、ファンクションを分ければうまくいくのですが、引数(?)配列(?)を使用して、ひとつのファンクションにまとめれないものでしょうか。。。
ちなみに、スクリプトは以下の通りです。
var count;
function BoxChecked(){
if (document.kisyu.x.checked == true){
for(count = 0; count < document.kisyu.ck.length; count++){
document.kisyu.ck[count].checked = true;
}
}
else{
for(count = 0; count < document.kisyu.ck.length; count++){
document.kisyu.ck[count].checked = false;
}
}
}
上記スクリプト内の「x」が大分類のチェックボックス、「ck」が小分類のチェックボックスとなっています。
色々試したのですがうまくいかず。。。
どなたかご教授願います。
No.3ベストアンサー
- 回答日時:
bxが親でsxが子という名前で確定しているなら以下のようにしてください
ちなみにinputは最低限formの入れ子にしてください
<script language=javascript>
function allCheck(obj){
f=obj.form
num=obj.name.replace("b","")
for(var i=0;i<f.length;i++){
if(f[i].name=="s"+num) f[i].checked=obj.checked;
}
}
</script>
<form>
<table border="0">
<tr>
<td rowspan="4" class="color_1"><input type="checkbox" name="b1" onClick="allCheck(this)">果物</td>
<td class="color_1"><input type="checkbox" name="s1">りんご</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s1">バナナ</td>
</tr>
<tr>
<td class="color_1"><input type="checkbox" name="s1">もも</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s1">なし</td>
</tr>
<tr>
<td rowspan="3" class="color_1"><input type="checkbox" name="b2" onClick="allCheck(this)">野菜</td>
<td class="color_1"><input type="checkbox" name="s2">きゅうり</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s2">トマト</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s2">キャベツ</td>
</tr>
</table>
</form>
ご回答ありがとうございます。
まさに、望むとおりの動きができました!!
本当にありがとうございました!!
まだまだJavaScript初心者なもので、仕組みがよくわからないのでいただいたソースを解析して勉強したいと思います。
本当にありがとうございました!!
No.2
- 回答日時:
大分類と小分類に親子関係を持たせて入れ子になっていれば出来ます。
サンプル)…分かりやくfieldsetを使いましたが単なるdivとかでも可能です。(その場合は親子を括るタグにはclassを付ける等して親だと判定できるようにする必要がありますが。)
<html>
<head>
<title>test</title>
<script type="text/javascript">
<!--
function allchk(O){
for(var pO = O.parentNode;;pO = pO.parentNode) {
if(pO.nodeType == 1 &&
pO.tagName == 'FIELDSET') break;
}
var cList = pO.getElementsByTagName('input');
var cListLength = cList.length;
for(var i= 0 ;i<cListLength;i++) {
if(cList[i] == O) continue;
cList[i].checked = O.checked;
}
}
//-->
</script>
</head>
<body>
<fieldset><legend><input type="checkbox" onclick="allchk(this)">大分類1</legend>
<input type="checkbox">小分類1-1
<input type="checkbox">小分類1-2
<input type="checkbox">小分類1-3
</fieldset>
<fieldset><legend><input type="checkbox" onclick="allchk(this)">大分類2</legend>
<input type="checkbox">小分類2-1
<input type="checkbox">小分類2-2
</fieldset>
</body>
</html>
この回答への補足
ご回答ありがとうございます。
ご教授いただいた方法で、思い通りの動きをしてくれました。
ありがとうございました。
そこでまた問題が発生したのですが。。。
テーブルを組むと、fieldsetは使えないのでしょうか。。。
<table>
<tr><fieldset><legend>
<td rowspan="3"><input type="checkbox">大分類1</legend></td>
<td><input type="checkbox">小分類1-1</td>
</tr>
<tr>
<td><input type="checkbox">小分類1-2</td>
</tr>
<tr>
<td><input type="checkbox">小分類1-3</td>
</fieldset></tr>
<tr>
<fieldset><legend>
<td rowspan="3"><input type="checkbox">大分類2</legend></td>
<td><input type="checkbox">小分類2-1</td>
</tr>
<tr>
<td><input type="checkbox">小分類2-2</td>
</tr>
<tr>
<td><input type="checkbox">小分類2-3</td>
</fieldset></tr>
</table>
上記のようにしてみたところ、大分類1をチェックしたときに小分類1-1のみにチェックがつき、大分類2をチェックしたときに小分類2-1のみにチェックがつきました。。。
テーブルを組んだ場合、divなどで親子関係を作る必要があるのでしょうか。。。
No.1
- 回答日時:
大分類はそれぞれ同じ名前なのですか?
また小分類もすべて同じ名前なのですか?
ではそれぞれの要素の違いを何でみわけているのでしょうか?
value値?
もしなんらかの法則性があるなら実現可能です。
基本的にはそれぞれの名前に一定の法則性をつけて管理するのが
一番簡単だとおもいます。
とにかく、チェックボックスの状況をhtmlソースとして
一度、提示してみてください
この回答への補足
ご回答ありがとうございます。
大分類、小分類ともに全て違う名前です。
(ここで言う「名前」というのは、単なるテキスト名?でしょうか??checkboxのnameのことであるならば、単純に1から順に名前をつけていこうかと思っております。)
チェックボックスの状況は、以下のようになっています。
<table border="0">
<tr>
<td rowspan="4" class="color_1"><input type="checkbox" name="b1">果物</td>
<td class="color_1"><input type="checkbox" name="s1">りんご</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s1">バナナ</td>
</tr>
<tr>
<td class="color_1"><input type="checkbox" name="s1">もも</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s1">なし</td>
</tr>
<tr>
<td rowspan="3" class="color_1"><input type="checkbox" name="b2">野菜</td>
<td class="color_1"><input type="checkbox" name="s2">きゅうり</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s2">トマト</td>
</tr>
<tr>
<td class="color_2"><input type="checkbox" name="s2">キャベツ</td>
</tr>
</table>
説明不足で申し訳ございませんでした。
ご教授の程、宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) エクセルについて/Excel グラフを作りたいのですが、エクセルが苦手でうまくできません。 グラフの 1 2022/07/28 00:35
- Outlook(アウトルック) Outlookについて教えてください。 分類項目がついているメールに対して、 以下のような絞り込み( 2 2023/04/29 08:20
- その他(Microsoft Office) Outlookについて教えてください。 分類項目がついているメールに対して、 以下のような絞り込み( 1 2023/04/28 19:22
- 数学 期待値について 12 2022/10/12 19:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面表示とともにtableの指定の...
-
jQueryで合計を出したい
-
文字数を数える際に空白、改行...
-
複数のselect値で1つも選択され...
-
入力チェックの外部スクリプト...
-
クリックしたラジオボタンの行...
-
ボタンを押してテキストボック...
-
画面の2重起動をチェックする...
-
チェックボックス付きのテーブ...
-
ラジオボタンとテキストボック...
-
onchangeイベントを強制的に発...
-
プルダウン選択を変更すると、...
-
return trueとreturn falseの用...
-
チェックボックスのON/OFFでVal...
-
<JavaScript>tableタグを入力不...
-
Selectボックスの一覧表示方法
-
select要素のvalueを配列で取得...
-
innerHTML内では改行は禁止?
-
JavaScriptで特定のtdタグにcla...
-
onclickが動作しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
画面表示とともにtableの指定の...
-
JavaScriptの「.querySelectorA...
-
Javascriptの電卓で最初の何も...
-
localStorageでのcheckbox制御
-
文字数を数える際に空白、改行...
-
テーブル内のチェックボックス...
-
クリックしたラジオボタンの行...
-
複数のselect値で1つも選択され...
-
jQueryで合計を出したい
-
送信ボタン連打を抑止したいです
-
ラジオボタンが選択されたらテ...
-
ラジオボタンを一括で操作する...
-
formで項目を連結したい
-
javascriptで表(テーブル)の自...
-
同一nameの input type="text"...
-
動的に生成されるラジオボタン...
-
ボタンクリックでフォーカス移動
-
JavaScriptによる自動計算フォーム
-
選択したテーブルのセルの背景...
おすすめ情報