こんにちは 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>

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qで、Q1に後で値を設定して表示するには

お世話になります。
<input type="text" name="Q1">で、Q1に後で値を設定して表示するにはどうしたら良いものでしょうか。
name="Q1"
と、しているので、
onMousedown="function()"
で、nameでしてしたエリアに値を書き込めば、できると思うのですが、
このfunction()をどのように書いたらよいものか、いろいろ調べてもわかりません。
何とかご教示願えないでしょうか。
よろしくお願いします。

Aベストアンサー

javascriptを利用することで出来ます。
こんな感じで動くでしょう。
ちなみにテキストボックスなどをjavascriptで操作する場合は
idをつけておくと便利です。

これ以上をやりたいというのであれば
参考URLなど見て勉強してみてください
<html>
<head>

</head>
<body>

<input type="text" id="Q1" name="Q1" onmousedown="hoge()">
</body>
<script type='text/javascript'>
function hoge()
{
Q1.value = ""; //""のなかに設定する値
}
</script>

参考URL:http://www.parkcity.ne.jp/~chaichan/src/javasc21.htm

Q

<input type="hidden" name = "hoge">があったとします。
これを、javascriptを使用し nameで検索します。
”hoge”を検索後、その”hoge”という名前を変更する方法を探しています。 

<input type="hidden" name = "hoge">
       ↓↓↓↓↓
<input type="hidden" name = "fuga"> 

リフレッシュ無しで、上記のようにnameを変える方法が知りたいです。

ご存知の方おりましたら、お手数ですが教えていただけませんでしょうか。
宜しくお願いいたします。

Aベストアンサー

タグが特定出来れば、setAttribute等で属性値を変更出来ます。
setAttribute("name","fuga")

Q

▼次のようにページ内のdivタグのidの名前によって、formタグ内の要素をdisableにすることはJava scriptによって可能でしょうか?

<div id="AA">のとき、別の場所にある<form id="BB">内のselect要素などすべての要素をdisableにする。

また同時に、id="BB"に指定したスタイルシートの記述を書き換えることは可能でしょうか?

何かよい方法をご存知でしたら教えてください。よろしくお願いいたします。

Aベストアンサー

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として使わない方が良いです。
つまり、
id="soldout"の時に
var soldout;という風にはしない方が良いです。
同じでなければ、cartFormでもなんでもかまいません。
あと、scriptは、
<!--
(スクリプトの中身)
//-->
のように
<!--
//-->
で囲むようにします。

getElementById
は、ブラウザやのブラウザのバージョンによっては使えないことがあります。
その場合は、使えるかどうかを調べる必要があります。

<script type="text/javascript">
<!--
function stockStatus (num){
var f=document.getElementById("soldout");

if(f!=null){
for (var i =0; i<=f.length -1 ;i++){
f.elements[i].disabled=num;
}
}
}
//-->
</script>

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として...続きを読む

Q

に文字列をセットするために

<form>
<input type="file" id="x"/>
</form>
<input type="button" onclick="f()" value="push"/>
<script>
function f()
{
var e=document.getElementById("x");
e.value="x.txt";
}
</script>

としてもセットできません

<form>
<input type="text" id="x"/>
</form>
<input type="button" onclick="f()" value="push"/>
<script>
function f()
{
var e=document.getElementById("x");
e.value="x.txt";
}
</script>

であればセットできるのです
どうしたらセットできるでしょうか?

Aベストアンサー

Minefield 3.0a1で実験を行いました。
おっしゃる状況が再現できました。

参照クリック後のinput要素のvalue値を調べた時は問題なさそうだったので

Console2を用いてエラーを見てみたところ
エラー: Security error = NS_ERROR_DOM_SECURITY_ERR

と、セキュリティ上の理由からエラーが出ているようでした。多分仕様だと思います。

ところで...補足要求。
【何がしたくて】これを行いたいのでしょう?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報