電子書籍の厳選無料作品が豊富!

No.172288で質問したものですが
まだJavaScriptを勉強しはじめたばかりでまた壁にぶつかってしまいました。

Bのリストボックスの値をAに追加して他のページにPOSTで送りたいのですが
Aに追加された値をすべて送りたいのです。
それで、まずすべての値をとれるかどうかを確認するためにSubmitボタンを押して
すべてを表示させるものを作ってみたのですが、どうしても
一番目(つまりiが0のAAAAA)しか表示できません。

エラーも出ないのでどこが間違っているのかがわからないのですが
どこが間違っているのでしょうか。
何度もすみませんがよろしくおねがいします。

<html>
<head>
<title></title>
</head>
<script type="text/JavaScript">
<!--
function addItem() {
A = document.X.A;
B = document.X.B;
for(var i=0;i<B.options.length;i++)
if(B.options[i].selected)
A[A.options.length] = new Option(B.options[i].text, B.options[i].value);
}
function func(){
for(var w=0;w<A.options.length;w++)
document.write(A.options[w].text);
}
// -->
</script>
<body>
<form name="X">
<select size="5" multiple name="A">
</select>
<input type="button" value="Copy" onClick="addItem()">
<select size="5" multiple name="B">
<option>AAAAA</option>
<option>BBBBB</option>
<option>CCCCC</option>
</select>
</form>
<form name="Y">
<input type="button" value="Submit" onClick="func()">
</form>
</body>
</html>

A 回答 (2件)

最初のループで document.write した時に変数の値がクリアされてしまってるようなので、先に送る文字列を作成してしまってから次の処理に移ってはいかがでしょうか。



//sample:
function func(){
str="";
for(var w=0;w<A.options.length;w++) {
str = str +"(区切り文字)"+ A.options[w].text;
}
document.write(str);
}

ただしこれは上記サンプルを動かすだけのためなので、
「POSTで送りたい~」という処理の助けになるかどうかはわかりません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
結局配列にいれてしまったほうが早かったので
そっちにしてしまいましたが
大変勉強になりました。
(求める処理も完成いたしました。皆さまありがとうございました。)

お礼日時:2001/11/26 14:26

おはようございますaki_oさん、xruzです。



1.submitで送付されるデータは、通常submitが含まれるformデータです。
2.postで送付されるデータはtext値でなくvalue値です。
3.サーバ側のプログラムないしはスクリプトはmultivalue(複数値)を取得できる記述になっていますか。

以上の3点をもう一度確認してくださいね。
    • good
    • 0
この回答へのお礼

つくりたかったものは完成いたしました。
いろいろご教授ありがとうごさいました。
たいへん勉強になりました。

お礼日時:2001/11/26 14:28

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