• ベストアンサー

一つ少ないmyFORM.length

下記のような form 内のチェックを全てはずす関数があります。 なぜうまく機能するのでしょうか? document.myFORM.lengthの部分はエレメンツの数より1少ない数を返すとリファレンスに書いてありました。 わたしの考えでは、5個あるラジオボタンの5個目にチェックが入っていたら、チェックは消えない気がするのですが…… function mouitido(){ for (i=0; i<document.myFORM.length; i++) { if (document.myFORM.elements[i].checked) { document.myFORM.elements[i].checked = false; } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>document.myFORM.lengthの部分はエレメンツの数より1少ない数を返すとリファレンスに書いてありました。 どう考えても間違いです。 エレメンツの添字の数(elements[i]のi)が0から始まるので、 document.myFORM.lengthより1小さくなるというのなら合っていると思いますが ラジオボタン1:myFORM.elemnets[0] ラジオボタン2:myFORM.elemnets[1] ラジオボタン3:myFORM.elemnets[2] ラジオボタン4:myFORM.elemnets[3] ラジオボタン5:myFORM.elemnets[4] なので、 エレメンツの数は5です

hikiko
質問者

お礼

解答ありがとうございます。 document.myFORM.lengthの部分をアラートで表示してみるともっとも大きい参照番号ではなく、ラジオボタンの数が表示されました。 http://www.openspc2.org/JavaScript/ref/form/length.htm 私が最初に参考にした↑このページの記述には問題は無いのでしょうか? 大変誤解しやすいとは思うのですが。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2お礼の参考URLの説明は間違いです。 あのページにサンプルとして提示されているソースで ボタンが6つあるのに、5つだとアラートで表示されるのでそのように勘違いしたのだと思います。 サンプルのソースでaction指定している文字列が””がちゃんと閉じていないので、1つの目ボタンがちゃんとボタンとして認識できなくなっています。 そのために、ボタンを6個書いたのに、ボタンが5個しか表示されず、formのlengthが5になっています。

hikiko
質問者

お礼

度重なるご解答まことにありがとうございます。 今、私の気持ちはとても晴れやかです。

全文を見る
すると、全ての回答が全文表示されます。
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

そのリファレンスの方が間違っているとしか思えませんが。 実際に alert(document.myFORM.length) などとして、確認してみては?

hikiko
質問者

お礼

ありがとうございます。大変勉強になりました。 http://www.openspc2.org/JavaScript/ ↑のサイトの↓のページを参考にしたのですがどうも勘違いしてました。 http://www.openspc2.org/JavaScript/ref/form/length.htm alert(document.myFORM.length)で中身を確認したところ 予想より2大きい数字が表示されました。 よく考えれば、form 内にラジオボタンのほかに 関数実行用の<input type="button">が二つあったからです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

  • documentオブジェクトのlengthが取れない

    以下のプログラムでobjのlengthが「undefined」となる原因がわからない <script language="JavaScript"><!-- function Check() {alert("スタート"); var obj = document.frm.elements['check']; var i,j =0;alert("length="+ obj.length); for (i = 0; i < obj.length ; i++ ) { if ( obj[i].checked == true ) {j++;} } alert( 'チェックボックスの数='+ i); alert( 'チェックした数='+ j); } //--></script> <form name="frm" method="POST"><input type="checkbox" name="check" value="1"></form> <a href="javascript:Check();">チェック</a> formの中を以下のように変更すると正しく表示される <form name="frm" method="POST"><input type="checkbox" name="check" value="1"><input type="checkbox" name="check" value="2"></form> どなたか、ご教授くださいませ。

  • 複数のラジオボタンの選択チェック

    Q1とQ2の2問があり、ラジオボタンで回答を選択するようにしていますが、 ラジオボタンを選択しなかった場合、選択を促すようメッセージを表示させるようJavaScriptで以下のように作成してみましたがうまくいきません。 Q1とQ2の両方を選択しなかった場合、「Q1が選択されていません」とメッセージが表示されますが、Q1だけを選択してQ2を選択しなかった場合はメッセージが表示されません。 いろいろ調べてみたのですが、function checkの使い方に問題があるのでしょうか? function check(){ var flag = 0; if(document.form1.Q1.length) { flag = 1; var i; for(i = 0; i < document.form1.Q1.length; i ++){ if(document.form1.Q1[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q1が選択されていません'); return false; } else{ return true; } var flag = 0; if(document.form1.Q2.length) { flag = 1; var i; for(i = 0; i < document.form1.Q2.length; i ++){ if(document.form1.Q2[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q2が選択されていません'); return false; } else{ return true; } }

  • ラジオボタンとセレクトボックスの選択チェック

    ラジオボタン、セレクトボタンの選択チェックをしたいのですが 同時にチェックする場合どうすればよいのでしょうか。 失敗策ですが、参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++){ if(document.form1.seibetu[i].checked){ flag=0; break; } } } else{ if(!document.form1.seibetu.checked){ flag=1; } } if(flag){ window.alert('性別が選択されていません'); return false; } else{ return true; } if(document.form1.nenrei.options[document.form1.nenrei.selectedIndex]. value==""){ flag=1; } if(flag){ window.alert('年齢が選択されていません'); return false; } else{return true; } }

  • フォームの入力チェックをすると既に入力した項目が消える

    実は過去のQ&Aの中でご紹介されていた ホームページを拝見させて頂いたのですが、 残念ながら私の応用力が足りず、 上手く作ることが出来ません。 下記のように書いてみたのですが、 これでは未入力のメッセージにOKを押すと その前に入力したものが全て消えてしまいます。 何方か、正しい書き方をご教示下さいますよう 宜しくお願い申し上げます。 <script language="JavaScript"> <!-- function checkForm(){ if(document.form1.chk1.checked == false && document.form1.chk2.checked == false) { alert('チェックなし'); return false; } { flag = 0; for ( i = 0 ; i < document.form1.radiobtn.length ; i++){ if (document.form1.radiobtn[i].checked){ flag = 1; } } if (!flag){ alert('ラジオなし'); return false; } if(document.form1.sel.selectedIndex == 0){ alert('メニューなし'); document.form1.sel.focus(); return false; } if(document.form1.bun.value == ""){ alert('文字なし'); document.form1.bun.focus(); return false; } } return true; } //--> </script>

  • アンケート送信のチェックについて

    初心者で本を見ながらアンケートを作っています。 質問事項はラジオボタンで選ぶようになっていて、 送信時にチェックされていない項目があったら「すべての項目をチェックしてください」とメッセージを出したいです。 ある本に「フォームに空欄がないか確認する」ソースがあったのでそれを応用したいのですが上手くできません。 =====ソースは下記です。===== <script language="JavaScript"> <!-- function check(){ for( i=0; i<document.form1.length; i++ ){ if(document.form1.elements[i].type =="radio"){ if(document.form1.elements[i].value ==""){ alert("すべての項目にチェックをしてください"); return false; } } } return true; } //--> </script> ~~~~ ~~~~ <FORM NAME="form1" action="****/*****.pl" method="POST" onSubmit="return check()"> ~~~ ~~~ =====ここまで 本にはtype =="radio"のところが"text"になっていたのですが、エレメントの種類には"radio"もあったので これをいれればチェック出来ると思ったのですが、チェックしないで送信ができてしまいます。 どなたかご教授お願いします。

  • チェックボックスのチェックについて

    チェックボックスが2つあります。 一つが選択されたらテキストボックスが入力可能にしてあります。 Aを選択すると、Bのチェックが外れる、反対の場合も同じようにしたいのですが、下記のように書きましたがうまくいきません。 解決方法が分かられる方、教えて下さい。 *********************************************** function Change(){ if(document.myForm.chkB.checked ==true{ document.myForm.TxtA.disabled = true; document.myForm.chkA.checked = false; } else { document.myForm.TxtA.disabled = false; document.myForm.chkA.checked = true; } } ***********************************************

  • java script フォームのチェックボックス入力制限について

    java script フォームのチェックボックス入力制限について どなたかお教えください。 以下のコードを書き換えて、現状では1つのチェックボックスを複数にし(かつ、複数選択可にし)、チェックボックスをチェックした場合のみ「選択肢」ラジオボタンがアクティブになる仕様にしたいと考えております。 サイト上で見つけたサンプルコードをいじっているのですが、何分素人なのでうまく行きません。どなたか助けていただけると助かります。 よろしくお願いします。 <script type="text/javascript"> function fchk3(obj){ var frm=obj.form; var len=frm.elements.length; if(obj.checked==true){ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].disabled=false; } } }else{ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].checked=false; frm.elements[i].disabled=true; } } } } </script> <form name="form3" action="#"> <label for="chk3"><input type="checkbox" id="chk3" name="chk3" onclick="fchk3(this)" checked="checked" />このボタンのチェックを外すとラジオボタンが無効化</label><br /> <label for="chk3_r1"><input type="radio" id="chk3_r1" name="r1" />選択肢</label> </form>

  • チェックボックスの連動でJavaScriptの記述を短くしたい。

    【あ】、【い】という項目があり、それぞれの項目内にA、Bというチェック項目があります。 【あ】項目のAにチェックを入れると【い】のAにもチェックが入るように作りました。 以下のソースでもなんとか動くのですが、【あ】、【い】という項目が増える事とA、Bというチェック項目が増えることが判り、JavaScriptのソースを少しでも短くしたいのですが、なにか好い方法がございましたらお教え頂ければ幸です。 /************参考ソースです*****************/ <html> <head> <title>無題ドキュメント</title> <script> function check_a(){ if(document.form.a.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_b(){ if(document.form.b.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } function check_aa(){ if(document.form.aa.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_bb(){ if(document.form.bb.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } </script> </head> <body> <form name="form"> 項目【あ】 <input type="checkbox" name="a" onclick="check_a()"> A<BR> <input type="checkbox" name="b" onclick="check_b()"> B<BR> <br /> 項目【い】 <input type="checkbox" name="aa" onclick="check_aa()"> A<BR> <input type="checkbox" name="bb" onclick="check_bb()"> B<BR> <br /> </form> </body> </html> /*************************/ 何卒、宜しくお願い申上げます。m(_ _)m

  • ページ内の全チェックボックスのチェック

    ページ内の全チェックボックスのチェックするブックマックレットを作成したいのですが、うまく動作しません。どのようにすればよいのでしょうか? よろしくお願いします。 javascript:void(for(i=0; i<document.form[0].elements[0].checkboxs.length; i++){document.form[0].elements[0].checkboxs[i].checked=true;})