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

こんにちは JavaScript初心者です。
過去ログを見ながらここまでやったのですが、何も表示されません。
?マークの所で引っかかっていると思うのですがどなたかご教授願います。
やりたい事は、チェックボックスのチェックの入った所の値を取り出して表示したいのですが...
3つチェックされていてOKをクリックした時に、ABC と出てくるのが理想です。
<html>
<SCRIPT LANGUAGE="JavaScript">
<!--
function chkform() {
for(i=1; i<=3; i++) {

chkdata(i) = document.form0.chk(i).Value    ?
var aa = chkdata(i)

document.write(aa)
}
}
//--></SCRIPT>

<FORM onSubmit="return chkform(this)" name = "form0">

<INPUT type="checkbox" name="chk" value="A" >
<INPUT type="checkbox" name="chk" value="B" >
<INPUT type="checkbox" name="chk" value="C" >

<INPUT type="submit" value="OK" >
</form>

</html>

A 回答 (2件)

これでは全然ダメです。


もう少し本なり見て勉強しましょう。

function chkform() {

var chkdata = new Array();
var aa = "";
var len = document.form0.chk.length;

for(i=0; i<len; i++) {
if ( document.form0.chk[i].checked ) {
chkdata[i] = document.form0.chk[i].value;
aa += chkdata[i];
}
}
document.write(aa);
}

やるなら、こんな感じで良いのでは?
#私的にはこんなのでも嫌ですが。。。

各行で何をやってるか理解した上でご使用ください。m(__)m
    • good
    • 0
この回答へのお礼

できました。
ご指摘のとうり勉強不足だと思います。
Webだけではなくこれからは本も見ようと思います
ありがとうございました。

お礼日時:2002/04/15 08:49

もう少し!ですよ。

無理に配列使わなくてもできるはず。
ほとんどi_am_aliveさんの回答への着けたしになってしまいましたが、
下記ではいかがでしょう?
#インデントのため全角スペース入れてます。動作確認してません。

<script language="JavaScript">
<!--
 function chkform() {
  var aa = "";
  var chkdata = "";
  for(i = 0; i < 2; i++) {
   chkdata = document.form0.chk[i].value;
   aa = aa + chkdata:
  }
  document.write(aa);
 }
//-->
</script>

<form name="form0">
<input type="checkbox" name="chk" value="A">
<input type="checkbox" name="chk" value="B">
<input type="checkbox" name="chk" value="C">
<input type="button" value="OK" onClick="javascript:chkform();">
</form>

1.式の終わりには「;」セミコロンを必ず記述します。
2.forの中に「var」を記述するとループの度に初期化されてしまいます。
  #たぶんこれが一番の間違いでしょう。
3.配列(chk)の要素指定は [ ] で行います。
4.(サーバに)送信しない関数をコールする時は、
  onSubmitよりもonClickを使用する方が楽(かな?)
  この関係で <input type="submit"> ではなく <input type="button"> を
  使用しました。
5.関数のコール元で「return 関数名();」と書いた時は必ず戻値を
  返す必要があります。今回は「document.write」しているだけなので
  「return」は要りません。
6.今回は使いませんでしたが配列を使用する場合は i_am_aliveさんが書かれた
  ように「var hoge = new Arry();」と記述する必要があるでしょう。
7.配列の要素数は「0」からスタートします。1番目の chk の値を取得するには
  「chk[0].value」となります。よって i の初期値は 0 です。

わお。いっぱい書いてしまいました。Webで情報を収集するのも良いのですが、
基礎知識はしっかり学習しましょう。基礎あっての応用ですから。(^-^)
頑張って下さい。

【新JavaScript入門】
http://member.nifty.ne.jp/aya/js2/js2_frm.htm
【一撃必殺JavaScript日本語リファレンス】
http://www.openspc2.org/JavaScript/

参考URL:http://member.nifty.ne.jp/aya/js2/js2_frm.htm
    • good
    • 0
この回答へのお礼

できました。
親切にいろいろ教えていただきありがとうございました。
これから基礎知識を勉強しようと思います。

お礼日時:2002/04/15 08:54

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