• ベストアンサー

一つ少ない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