プロが教える店舗&オフィスのセキュリティ対策術

DBから条件にあったレコードを取得して一覧表示させ、各行頭にラジオボタンを表示させています。
Javascriptのlengthを使ってラジオボタンの個数を取得しているのですが、ラジオボタンが2個以上ある場合は正常に取得できますが1個しかない場合は「undefine」となり、個数が取得できません。

lengthプロパティは2個以上でしか有効にならないのか、又はこれを回避する書き方があるのか教えてください。

A 回答 (3件)

<input type="radio" name="rbt" value="A">A


<input type="radio" name="rbt" value="B">B
<input type="radio" name="rbt" value="C">C
とかいうようにラジオボタンを書いているのだったら

document.getElementsByName('rbt').length
でラジオボタン(というより同じ名前のエレメント)の数が取れます。
ラジオボタンが1つでも大丈夫です。

どのようにソースを書いておられるかわからないので
推測ですが、lengthが2個以上でないと使えないというのは、
コレクションになるかならないかということだと思います。
    • good
    • 0
この回答へのお礼

遅くなりました。
上の方法で取れました。ありがとうございます。
ただ、rbt自体を参照する場合に個数が一個だと配列が使えないので、やはり一個と複数個の場合で分岐は必要になるんですね。それはしょうがないか…。

お礼日時:2005/07/11 13:39

>rbt自体を参照する場合に個数が一個だと配列が使えない


getElementsByNameを使用する場合は、1コでも配列の形でアクセスできますよ。
例えば、
var radioButtons = document.getElementsByName('rbt');
とすれば、例えrbtが1個の場合でも
alert(radioButtons[0].value);
の様に配列としてアクセスできます。
状況を勘違いしてたらすみません
    • good
    • 0
この回答へのお礼

なるほど。
こういう書き方をすれば個数に関係なく対応できるんですね。
キレイにソースがまとまりました。
ありがとうございました!

お礼日時:2005/07/12 09:21

ちょっと出掛ける前なので検証する時間がありませんが、


とりあえず、思いつく回避方法を。

ラジオボタン.length で個数を取得しているのなら、
var wk個数=0;
if(ラジオボタン.length){wk個数=ラジオボタン.length;
}else wk個数=1;
以上で回避できると思います。
(上記はラジオボタンが必ず1つ以上存在するという前提の処理です。
0の場合がある時はそれ以前にラジオボタンが存在するか別途判断する必要があります。)

検証していないので、あくまで私の記憶,知識だけですけれど
参考になれば幸いです。
    • good
    • 0
この回答へのお礼

今、そういう書き方で対処していたのですがもっと適切な書き方があるのかな…と思って質問しました。
やっぱり、1個はとれないんですね。なんでだろう~。

お礼日時:2005/07/08 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!