(続)ラジオボタンの選択でチェックボックスのON/OFFを連動
前回(http://okwave.jp/qa5476132.html)とは全く違うものを参考に作成してみましたが、「ラジオボタンを選択するたびにチェックボックスのチェックが初期化される」というのがまだ出来ておりません。
どなたか教えていただけるとありがたいです><
<html>
<head>
<script language="javascript">
function classDisable(f,cn,fl){
for (var i=0;i<f.elements.length;i++){
if(f.elements[i].className==cn){f.elements[i].disabled=fl}
}
}
function classCheck(f,cn){
for (var i=0;i<f.elements.length;i++){
if(f.elements[i].className==cn && f.elements[i].checked==true && f.elements[i].disabled==false){return true;}
}
return false;
}
</script>
</head>
<body>
<form>
■分類<br>
<input type="radio" value="アリ" name="fpcdata" class="fpcdata" onClick="classDisable(this.form,'Kind01',!this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'Kind01'));">アリ
(
<input type="checkbox" value="DXF" name="Kind01[]" class="Kind01" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">DXF
<input type="checkbox" value="ガーバ" name="Kind01[]" class="Kind01" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">ガーバ
<input type="checkbox" value="PDF" name="Kind01[]" class="Kind01" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">PDF )
<input type="radio" value="ナシ" name="fpcdata" class="fpcdata" onClick="classDisable(this.form,'Kind01',this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'Kind01'));" checked>ナシ
<input type="radio" value="相談" name="fpcdata" class="fpcdata" onClick="classDisable(this.form,'Kind01',this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'Kind01'));">
相談
■分類<br>
<input type="radio" value="ナシ" name="print" class="print" onClick="classDisable(this.form,'Kind04',this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'Kind04'));" checked>ナシ
<input type="radio" value="アリ" name="print" class="print" onClick="classDisable(this.form,'Kind04',!this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'Kind04'));">アリ
(
<input type="checkbox" value="銀シールド" name="Kind04[]" class="Kind04" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">銀シールド
<input type="checkbox" value="銀ペースト" name="Kind04[]" class="Kind04" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">銀ペースト
<input type="checkbox" value="銅ペースト" name="Kind04[]" class="Kind04" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">銅ペースト
<input type="checkbox" value="シルク" name="Kind04[]" class="Kind04" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">シルク
色
<SELECT name="Kind04[]" class="Kind04" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">
<OPTION SELECTED VALUE="---">---
<OPTION VALUE="白">白
<OPTION VALUE="黒">黒
<OPTION VALUE="他">他
</SELECT> )
</form>
</body>
</html>
お礼
それぐらいの処理ならかけるのですが、非表示にする処理の時、対象のオブジェクトだけを除外する方法がわからなかったです。document.all.item(id,i) という指定方法を見つけたので、 頭の中を整理してもっと単純に考えてみました。 フラグでクリックしたら どれかが開いた状態「flag1」 すべて閉じている状態「flag0」として、 ____________________________________________ var flag=0; function red(a){ var id="more" if (flag==1){document.all.item(id).className="hide"; flag=0; } else { document.all.item(id,a).className="show"; flag=1; } } としてみたのですが、document.all.item(id).className="hide" が上手くいきません、showはきちんと動いてくれるのですが。 idは全て同じものを振っています。なぜ動かないのか。
補足
<a href="javascript:red(0);">A</a> <div id="more" class="hide">Aの詳細</div> <a href="javascript:red(1);">B</a> <div id="more" class="hide">Bの詳細</div> <a href="javascript:red(2);">C</a> <div id="more" class="hide">Cの詳細</div> var flag=0; function red(a){ var id="more"; var mor = document.all.item(id,a) if(flag == 0){ mor.className="show"; flag=1; } else if(flag == 1){ if(mor.className=='show'){ mor.className="hide"; flag=0; } else { for (i = 0; i <= document.all.item(id).length; i++){document.all.item(id,i).className="hide";} mor.className="show";//これをforが完全に終わってから実行したい } } } 概要 1全部閉じてたら対象を開く 2-Y対象が開いてたら対象を閉じる、1へ 2-N対象が閉じていたら全て閉じるfor文 対象を開く//ここが上手くいかない