- PR -

Javascriptでのオブジェクト名の変数化

投稿者投稿内容
会議室デビュー日: 2006/10/05
投稿数: 7
投稿日時: 2006-11-01 14:41
現在ASPにて開発中なのですが
Javascriptについて質問させて頂ければと思います。

チェックボックスが20個あり
その名前を name="Check01"〜"Check20"としてあります。
データ登録時に"Check01"〜"Check20"にチェックが一つもされていないと
エラーメッセージを出力する機能を作成中です。
チェックボックスのチェックカウント取得の為
下記のようなスクリプトを組みたいのですがうまく動作しません。

for (i=1;i<=20;i++){
if (document.form01.Ckeck + i + .checked){
count = count + 1;
}
}

「document.form01.Ckeck + i + .checked」
の部分を変数を使用して表現できないのでしょうか?

分かる方がいらっしゃいましたら教えて頂ければと思います。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-11-01 14:51
ASP.NET ではなく、ASP でしょうか?

HTML として作成されたチェックボックスの名前は確認されましたか?
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-11-01 14:56
このループおかしいですね。
デバッグすれば一目瞭然かと思います。

Ckeck + i

デバッグすればこれが明らかにおかしいことが分るはずです。
変数名でチェックする方法はあります。
しかしまず、このループのおかしいところを正してください。

引用:

冬さんの書き込み (2006-11-01 14:41) より:
現在ASPにて開発中なのですが
Javascriptについて質問させて頂ければと思います。

チェックボックスが20個あり
その名前を name="Check01"〜"Check20"としてあります。
データ登録時に"Check01"〜"Check20"にチェックが一つもされていないと
エラーメッセージを出力する機能を作成中です。
チェックボックスのチェックカウント取得の為
下記のようなスクリプトを組みたいのですがうまく動作しません。

for (i=1;i<=20;i++){
if (document.form01.Ckeck + i + .checked){
count = count + 1;
}
}

「document.form01.Ckeck + i + .checked」
の部分を変数を使用して表現できないのでしょうか?

分かる方がいらっしゃいましたら教えて頂ければと思います。



[ メッセージ編集済み 編集者: あすか 編集日時 2006-11-01 15:02 ]
会議室デビュー日: 2006/10/05
投稿数: 7
投稿日時: 2006-11-01 14:57
ひろれい様

ASP.NETではなくASPです。

HTMLで作成した20個のチェックボックスの名前はCheck01〜20です。
チェックボックスの名前が全て同じなら

for (i=1;i<=20;i++){
if (document.form01.Ckeck[i].checked){
count = count + 1;
}
}

としてカウントが取れるのですが、
チェックボックスが連番で全て別の名前になってしまっているので苦労しております。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-11-01 15:02
引用:

冬さんの書き込み (2006-11-01 14:57) より:

HTMLで作成した20個のチェックボックスの名前はCheck01〜20です。
ボックスが連番で全て別の名前になってしまっているので苦労しております。



とあるので、i=1 の時なんか取れないなぁ、と思った次第です。
会議室デビュー日: 2006/10/05
投稿数: 7
投稿日時: 2006-11-01 15:04
間違いがありました。

チェックボックスの名前はCheck01〜20ではなくCheck1〜20でした。

あすか様が指摘されている
Ckeck + i
は名前がCheck01なのにCheck1と指定してはエラーが起こって当然
とのご指摘かと思われます。

申し訳ありません。
taka
会議室デビュー日: 2005/07/05
投稿数: 5
お住まい・勤務地: 埼玉県さいたま市
投稿日時: 2006-11-01 15:06
JavaScriptは長いことやってないんですが、
そのCheck1〜Check20を配列か何かに格納してループさせたらいいんじゃないかなと思いますが。

Checkコントロールに名前持たせられる・・・
かどうかは分からないけど持たせられたらそれで判断するとか。


[ メッセージ編集済み 編集者: taka 編集日時 2006-11-01 15:07 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-01 15:11
引用:

冬さんの書き込み (2006-11-01 14:41) より:

「document.form01.Ckeck + i + .checked」
の部分を変数を使用して表現できないのでしょうか?


件名と上記引用からして、

コード:

    for (var i = 1; i <= 20; i++) {
        var obj = document.form01["check" + i.toString()];
    }


ということなのかと思っていましたが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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