プロが教える店舗&オフィスのセキュリティ対策術

ASP.NETでWIB開発をしております。
ツールはWeb Veveloper 2010 を仕様しています。

DBから値をn件取得し、表を表示。この表はLavelのtextを
html文字列で書き換えて表示しています。

-------------
String1 □     : ←<id="checkbox1 value="String1" onclick="xxx()"....
String2 □     : ←<id=checkbox2 value="String2".onclick="xxx()"....
Srring3 □     : ←<id=checkbox3 value="String3" onclick="xxx()"....
-------------
    [決定]

決定ボタンが押された時に、JavaScriptをよび、
その中で
checkbox1~3までのチェック済みのチェックボックスをカウントする
ロジックを次のようにかいています。

var count = 0;
var lines = 3;
var kensu = 0;
while(count < lines){
count +1;
if (form1.checkbox[count].checrd == true){   /※
/チェックされていた場合の処理
kensu=kensu+1;
}
}

checkboxのID値の、固定部分に、変数をくっつける事で、
n個のチェックボックスのチェック有無確認を行いたいとおもうのですが、
実行しますと※行で「メンバーでない」エラーが出てJavaScriptが止まります。
(以前は出来ていたのですが)

どうすればタグIDにカウントアップ変数を追加し、
連続して"同名のタグ名+数字"を参照する事ができるのでしょうか。
これはもしかしたらJavaScriptではなく、ASP.netの範疇の質問かもしれませんが
何卒よろしくお願いします。

A 回答 (3件)

formにcheckboxプロパティはないと思います。



id がそれぞれに振ってあるので、それを使った場合は次のような感じです。

var i = 1;
var lines = 3;
var kensu = 0;
var checkbox;

for(;i<=lines;i++){
checkbox=document.getElementById('checkbox'+i);
if (checkbox.checked){ 
kensu++;
}
}

参考URL:https://developer.mozilla.org/en-US/docs/DOM/HTM …

この回答への補足

q-ueさま、ありがとうございます。
変数"checkbox"の中に、id文字列を一度入れているのですね。
早速試してみます。
解決後、報告致します。

補足日時:2012/10/31 02:41
    • good
    • 0
この回答へのお礼

q-ueさま
報告が遅れまして、申し訳ありません。
無事、本件を解決し、目的とするものを作る事が出来ました。

ありがとうございました。

お礼日時:2012/11/10 20:18

こそっと。



<form action="#">
<p>String1 :<input type="checkbox" id="checkbox1" value="String1">
<p>String2 :<input type="checkbox" id="checkbox2" value="String2">
<p>String3 :<input type="checkbox" id="checkbox3" value="String3">
<p><input type="button" value="決定" onclick="hoge.call(this)">
</form>

<script>
function hoge () {
  var chkbx = this.form.querySelectorAll ('input[type="checkbox"][id^="checkbox"]:checked');
 alert(chkbx.length);
}
</script>
    • good
    • 0
この回答へのお礼

babu_baboo 様
ありがとうございます。
お礼が遅くなって申し訳ありません。

いただけましたソースは、forもwhileも使っていない為か、
チェックボックスが1個だけの場合でもチェックが正しく動きました。

実は今回の自分の遭遇したケースではチェックボックス数が動的に変わる為
自分ひとりではチェックボックスが1件のみの場合が上手く処理できず、
この回答は大いに参考になりました。

おかげさまで現在解決が出来ております。
ありがとうございます。

お礼日時:2012/11/10 20:15

えっと、


>form1.checkbox[count].checrd
form1.checkbox[count].checkedでは・・?
記載ミスだったらいいんですが、気になったので。

この回答への補足

Kool_noahさま、ありがとうございます。
ご指摘のcheckedは投稿時の記載ミスです。
さらにcountのインクリメントは
Count=count+1;
チェックがされたときの処理は
Checkbox[count]. Valueの取得です。
Checkbox 1にチェックがあったら、string1を取得、といった感じです。
正確でない記載をして申し訳ないです。

いまどのような動きをするのかともうしますと、
Coint=1の時、checkbox[count]. Value で取得できるのが
Checkbox2.value の値なのです。

その為、checkbox1が処理対象にできず
逆に最後のループで(おそらくcheckbox4を参照しようとし)
エラーになります。

どうすれば、checkbox1~nを正しくチェックできるのか、が、
相談ないようでございます。

補足日時:2012/10/30 13:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!