- PR -

JavaScript でCheckBoxList の項目数を知りたい

1
投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-08-25 10:01
■ASP.NET2.0
■VWD2005(VB)
■IE6.0

現在、DropDownList と CheckBoxList を持つ画面があります。
DropDownList が変更されたタイミングで、CheckBoxList の中身を変更しております。
(SelectedIndexChanged イベント)

同一画面上にボタンがあり、ボタンが押されたタイミングで CheckBoxList にチェックが付いているかどうかのチェックを行ないたいと考えております。

クライアント側でチェックしたいので、JavaScript でのチェックになると思いますが、やり方は document.getElementById を使って、For 文でグルグル回してチェックするしかないかな、と考えていますが、サーバ側で作成された CheckBoxList の項目の数をクライアント側でどうやって調べればよいか分からず悩んでいます。

サーバ側で、hidden にそっと埋め込む方法くらいしか思いつきませんでした。

何か方法はありますでしょうか?
藤本
会議室デビュー日: 2004/01/18
投稿数: 1
投稿日時: 2006-08-25 11:05
こんにちは。
なんか、以下と似てる話題なので、張っておきます。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11722&forum=7&6
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-08-25 11:09
CheckBoxList の各要素に同じ名前をつけて
document.getElementsByName の length を取るとか
これで取るなら for in でまわせばいいのか。。。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-08-25 13:02
藤本さん、かるあさん、お返事ありがとうございます。

藤本さんに貼っていただいたスレの処理も使えそうですね。
hidden を使うか、status でチェックするか実装しながら検討したいと思います。

ありがとうございました。
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2006-08-25 16:43
既に解決してしまったかもしれませんが、以下のようにするのがよいのではないかと思います。
コード:
var elements = document.getElementsByTagName("input")
for(var i=0,n=elements.length;i<n;i++) {
  if(elements[i].type == 'checkbox') {
    // チェックボックスに対する処理
  }
  // チェックボックス以外は無視
}

ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-08-25 16:51
引用:

sawatさんの書き込み (2006-08-25 16:43) より:

既に解決してしまったかもしれませんが、以下のようにするのがよいのではないかと思います。
コード:
var elements = document.getElementsByTagName("input")
for(var i=0,n=elements.length;i<n;i++) {
  if(elements[i].type == 'checkbox') {
    // チェックボックスに対する処理
  }
  // チェックボックス以外は無視
}




上記処理の場合、画面に普通のチェックボックスが存在したらダメじゃないですか?
説明不足で申し訳なかったのですが、普通のチェックボックスも存在します(^_^;)

結論として、私は hidden で対応しました。
というか、hidden しか思いつかず、それで実装していて質問しましたので・・・

status は、IE 以外のブラウザでも有効かどうか確認できなかった(調べきれなかった)ので、試しませんでした。ごめんなさい。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-08-25 17:00
一応書いてみる、同じ名前があったらだめだけれど。。。
コード:
<input type="button" value="個数" onclick="javascript:alert(document.getElementsByName('items').length)" />    
<table id="CheckBoxList1" border="0">
    <tr>
        <td><input id="CheckBoxList1_0" type="checkbox" name="items" /><label for="CheckBoxList1_0">item1</label></td>
    </tr><tr>
        <td><input id="CheckBoxList1_1" type="checkbox" name="items" /><label for="CheckBoxList1_1">item2</label></td>
    </tr><tr>
        <td><input id="CheckBoxList1_2" type="checkbox" name="items" /><label for="CheckBoxList1_2">item3</label></td>
    </tr><tr>
        <td><input id="CheckBoxList1_3" type="checkbox" name="items" /><label for="CheckBoxList1_3">item4</label></td>
    </tr>
</table>

THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2006-08-25 19:23
こんばんは

CheckBoxListが吐き出すtableのidはわかるんですから、その子供を再帰的に取得して、要素名がinputかつtype属性がcheckboxである要素の数を数えるのが汎用的かと思います。

ループの回数は結構増えてしまいますが・・・
1

スキルアップ/キャリアアップ(JOB@IT)