JavaScriptでcheckboxの値を取得する時に、propatiesエラーが出るんですが・・・
[上に]
[前に]
[次に]
とこ
1998/05/08(金) 13:20:54
はじめまして。よろしくお願いいたします。
JavaScriptでcheckboxのvalueを取得するプログラムを作ってみました。
----------------------------------------------------------------------
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
var TestValue="";
function checktest() {
for (i=0;i<2;i++) {
if (document.forms[0].test[i].checked == true) {
TestValue += document.forms[0].test[i].value;
}
}
window.alert(TestValue);
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<input type="checkbox" name="test" value="test1">test1<br>
<input type="checkbox" name="test" value="test2">test2<br>
<input type="button" value="test" onclick="checktest()">
</FORM>
</BODY>
</HTML>
----------------------------------------------------------------------
この時、checkboxが2個以上あれば何も問題なく動いてくれるのですが、
checkboxが1つの時(for (i=0;i<1;i++)の時に)、
「document.forms[0].test[i] has no properties.」と言われてしまいます。
ただ、for (i=0;i<1;i++)でも、checkboxが2個以上あれば問題なく動くんです。
なぜでしょう?なぜかしら?
omi
[E-Mail]
1998/05/08(金) 22:59:04
動かない原因は、不明ですが、
test[i] を elements[i]に替えると動かないでしょうか。
いいづか
[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>
とこ
1998/05/11(月) 09:34:04
[[解決]]
omiさん、いいづかさん、ありがとうございました
ばっちし動きましたです!!
>チェックボックス test が2つ以上ある場合は配列として扱えますが、
>ひとつしかない場合は配列にはなりません。
とは、知らなかったです。
勉強不足ですね、、、。
ありがとうございました。
今後ともよろしくお願いいたします。
[上に]
[前に]
[次に]