プロが教える店舗&オフィスのセキュリティ対策術

http://oshiete1.goo.ne.jp/qa2692133.html
でご教示いただいたJSは,チェックボックスのON/OFFに連動して
ラジオボタンのdisabledを解除するものです.
ところが本番環境は次のように大量です.

Q1 □チェック ◎ラジオ1 ○ラジオ2 ○ラジオ3 ○ラジオ4 ○ラジオ5
Q2 □チェック ◎ラジオ1 ○ラジオ2 ○ラジオ3 ○ラジオ4 ○ラジオ5
  :(中略)
Q15 □チェック ◎ラジオ1 ○ラジオ2 ○ラジオ3 ○ラジオ4 ○ラジオ5

なので,Qの数(15問)だけまったく同じfunctionを連ねましたが(↓),
もっと効率よい書き方があれば教えてください.

<html>
<head>
<script>
function checkfunc1() {
for(i=0; i<5; i++) {
document.myform.rdo1[i].disabled = !(document.myform.yesno1.checked);
}
}
function checkfunc2() {
for(i=0; i<5; i++) {
document.myform.rdo2[i].disabled = !(document.myform.yesno2.checked);
}
}
</script>
</head>
<body onLoad="checkfunc1();checkfunc2();">
<form name="myform">
<input type="checkbox" name="yesno1" onClick="checkfunc1();">チェック
<input type="radio" name="rdo1">0
<input type="radio" name="rdo1">1
<input type="radio" name="rdo1">2
<input type="radio" name="rdo1">3
<input type="radio" name="rdo1">4<br>
<input type="checkbox" name="yesno2" onClick="checkfunc2();">チェック
<input type="radio" name="rdo2">0
<input type="radio" name="rdo2">1
<input type="radio" name="rdo2">2
<input type="radio" name="rdo2">3
<input type="radio" name="rdo2">4
</form>
</body>
</html>

A 回答 (1件)

こんにちは。

こんなモンで どうでしょ?(↓)

<html>
<head>
<script>
function checkfunc(x) {
for(i=0; i<5; i++) {
document.myform.elements[x * 6 + i + 1].disabled = !(document.myform.elements[x * 6].checked);
}
}
function multi() {
for(x=0; x<15; x++) {
checkfunc(x);
}
}
</script>
</head>
<body onLoad="multi();">
<form name="myform">
<script>
for(i=0; i<15; i++) {
document.write("<input type='checkbox' name='yesno" + (i+1) + "' onClick='checkfunc(" + i + ");'>チェック");
for(j=0; j<5; j++) {
document.write("<input type='radio' name='rdo" + (i+1) + "'>" + j);
}
document.write("<br>");
}
</script>
<br>
</form>
</body>
</html>
    • good
    • 0
この回答へのお礼

hkd9001さん,早速ご回答いただきありがとうございました.
forでまわして汎用性を持たせるわけですね.
ざっくりこのまま組み込ませていただきました.
大変助かりました,ありがとうございました.

お礼日時:2007/01/30 10:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!