• ベストアンサー

チェックボックスの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>

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

  • ベストアンサー
noname#39970
noname#39970
回答No.2

lengthは「個数を返す」 よって個数「ではない」値である場合はundefinedとなる。 配列や文字「列」であるなら数えられるから値が返ってくる。 試しに alert(obj); で数値、文字列、配列の場合にどう表示されるか 見てごらん 中に入っているかどうか調べるなら (!obj) (obj==null) 辺りで判定する

その他の回答 (2)

noname#36864
noname#36864
回答No.3

ブラウザがそのように返すのならなんの疑いもなくundefinedです。 JavaScriptの決まりがどうであろうとW3Cが何を言おうがそのブラウザの現実はundefinedなんです。 それは何をどうしようが変わりません。 変えるなら自分で変えるしかありません。 オブジェクトのプロパティを作ることは許されているはずです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

同名の要素がないのであれば配列はかえってきませんので lengthプロパティはもっていません。 あえてやるならこんな感じ? function test(obj){ var len=1; if(obj.length) len=obj.length; alert('obj.length=[' + len + ']'); }

関連するQ&A