WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:チェックボックスのチェック

0:[投稿] しん [2003/05/15 18:23 ][環境:IE6,WIN2000 わからない]

こんばんわ。
またどうしてもわからない事象が出てきたので質問させてください。
同じフォームの中に35個チェックボックスがあって、
1つでもチェックされてたらflgを1としてループ終了としたいのです。
下のようにjavascriptを作ったのですが、どこかおかしいところがあるでしょうか?
色々調べて作ってみたのですが・・・よろしくお願いします。

flg=0;
len=document.formname.checkboxname.length;
for (i=0;i<len;i++){
   if(document.formname.checkboxname[i].checked==true){
    flg=1;
    break;
   }
}


1:[回答] ごだっち [MAIL] [URL] [2003/05/15 19:00 ]

提示されたソースでは、最初の1個しか数えていないように思えます。
なので、ループも1回しか回っていないのでは?

例えば、こうするとか

 flg=0;
 len= document.formname.elements.length;
 for (i=0;len>i;i++){
   var obj = document.formname.elements[i] ;
   if((obj.checked)&&(obj.name=="checkboxname")){
     alert(i + ", checked");
     flg=1;
     break;
   }
 }

IEのみなら、こうしてみるとか。

 flg=0;
 len= document.all["checkboxname"].length;
 for (i=0;len>i;i++){
   if(document.all["checkboxname"][i].checked){
     alert(i + ", checked");
     flg=1;
     break;
   }
 }


2:[回答] ごだっち [MAIL] [2003/05/15 19:43 ]

失礼!
提示されたソースだと、lenが未定義(undefined)になってしまうので、
ループは1回も回っていないか。


3:[関連] しん [2003/05/15 20:07 ]

こだっちさんありがとうございます!
そのプログラムでちゃんとできました!
でも、実はできたの分けてやった時だけなのです・・・

1つの画面にたくさんinputとかtableとかformとかってすると
おかしくなったりすることあるのでしょうか?
チェックボックス以外にもまだ同じ画面に色々作ってるので・・・
全部1つにまとめてするとlengthの値が入らないんです。どっかが間違えてるんですかね(汗)。


4:[完了] しん [2003/05/15 21:26 ]

できました!
原因はわかりませんが、もう一度プログラム書き直したら
無事に動きました!
ありがとうございました。また何かあったらよろしくお願いします。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World