• ベストアンサー

JavaScriptで配列を取得したい

お世話になります。 データベースから取得したリスト(可変)をフォームに設定したところ、 JavaScriptで配列を参照したところ、リストが1件の場合はエラー、 3件の場合は正常という現象がおき、困っております。 リストが1件の場合でも、配列に認識させたいのですが、 他の箇所も記述が多いためシンプルな手法を探しています。 よろしくお願い致します。 3件のレコードの場合、正常に処理される。 ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } ----------------------------- ■1件のレコードの場合、エラーになる (配列に認識されないらしく、obj.lengthが取得できない) ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } -----------------------------

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

chk_selの取得を document.getElementsByNameで取得してみましょう var obj = document.getElementsByName("chk_sel"); として 配列を返すメソッドで取得すれば obj.length でエラーになることも無いでしょう

noname#233398
質問者

お礼

無事に解決することができました! 修正も少なくて助かり、よい勉強をさせて頂きました。 有り難うございました。

その他の回答 (1)

noname#84373
noname#84373
回答No.2

function counter(emtName) { var cnt = 0; var val = 0; var chk = document.getElementsByName(emtName); var o; while (o = chk[cnt++]) if(o.checked) val++; return val; }

noname#233398
質問者

お礼

無事に解決することができました! サンプル有り難うございました。

関連するQ&A