いいづか
[E-Mail]
[HomePage]
1998/05/10(日) 03:04:38
チェックボックス test が2つ以上ある場合は配列として扱えますが、
ひとつしかない場合は配列にはなりません。そのため、
if (document.forms[0].test.checked == true) {
というような構文にする必要があります。
「CGIなどがチェックボックスを生成するので、1つかもしれないし
2つ以上かもしれない」場合のコーディングをしてみました。
よろしければご参考まで。なお、ネストを表現するため、
タブの代わりに全角スペースを使っています。貼り付けてテスト
するときは、全角スペースはタブかスペースにしてくださいね。
------------------------------------------------------------
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--///////////// checklist() 修正版 //////////////////////////
function checktest() {
TestValue="";
// フォーム f の全エレメントを対象として検証を行う。
// エレメントの数は不定なので、定数ではなくelements.length
// を使用したほうがいいと思う。
for (i = 0; i < document.f.elements.length; i++ ) {
// エレメントがチェックボックスの時に処理を行う。
if (document.f.elements[i].type == "checkbox" ) {
// チェックボックスがONの時はその値を設定する。
if (document.f.elements[i].checked == true) {
TestValue += document.f.elements[i].value;
}
}
}
document.f.result.value = TestValue; // 設定結果の表示
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<!--問題のフォーム -->
<FORM name=f><!-- フォームには名前を付けたほうがいいです。 -->
<!--------チェックボックスを増減してみてください。------------>
<!--------JavaScriptの変更は不要です。------------------------>
<input type="checkbox" name="test" value="test1">test1
<input type="checkbox" name="test" value="test2">test2
<!--------ここまでですよ-------------------------------------->
<P>結果表示エリア:<input type="text" name="result"></P>
<input type="button" value="test" onclick="checktest()">
</FORM>
</BODY>
</HTML>