- ベストアンサー
チェックボックスのlengthについて
チェックボックスで以下のソースでは obj.length=[undefined] と表示されます。1という結果ではないのでしょうか? <script type="text/javascript"> <!-- function test(obj){ alert('obj.length=[' + obj.length + ']'); } // --> </script> <form name="test_form"> <input type="checkbox" name="chk" value="">チェック1 <input type="button" value="テスト" onClick="test(document.test_form.chk)"> </form>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
lengthは「個数を返す」 よって個数「ではない」値である場合はundefinedとなる。 配列や文字「列」であるなら数えられるから値が返ってくる。 試しに alert(obj); で数値、文字列、配列の場合にどう表示されるか 見てごらん 中に入っているかどうか調べるなら (!obj) (obj==null) 辺りで判定する
その他の回答 (2)
ブラウザがそのように返すのならなんの疑いもなくundefinedです。 JavaScriptの決まりがどうであろうとW3Cが何を言おうがそのブラウザの現実はundefinedなんです。 それは何をどうしようが変わりません。 変えるなら自分で変えるしかありません。 オブジェクトのプロパティを作ることは許されているはずです。
- yambejp
- ベストアンサー率51% (3827/7415)
同名の要素がないのであれば配列はかえってきませんので lengthプロパティはもっていません。 あえてやるならこんな感じ? function test(obj){ var len=1; if(obj.length) len=obj.length; alert('obj.length=[' + len + ']'); }