計算練習プログラムの問題作成と保存方法

このQ&Aのポイント
  • 一度に出題される10問が異なる問題になるような計算練習プログラムを作成する課題があります。
  • 問題作成時に正解だけでなく問題も保存するようにし、新たに問題を作成したときに保存されている既存の問題と比較して重複しないようにします。
  • nとmを配列にして問題の数値を保存し、questionCheck関数を使って問題が重複していないかを判定します。
回答を見る
  • ベストアンサー

▲▲JavaScriptに詳しい人見てください▲▲

一度に出題される10問が全て異なる問題になるような計算練習プログラムをつくる課題がでました>< ・ 問題作成時,正解だけではなく問題も保存するようにする. (保存のしかたにはさまざま形がある.どのような形でもよい.) ・ 新たに問題を作成したとき,保存されている「既に存在している (出題されている) 問題」と比較し, 同じものがあれば (新しいものになるまで) 作り直す. というヒントがあります・・ 一度書いてみましたが・・ <title>計算練習プログラム(3)</title> <h1>計算練習プログラム (3)</h1> <form name="f"> <table border> <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> <script type="text/javascript"> <!-- // 変数・関数の定義. var i, n, m; n = new Array(11); m = new Array(11); var questions = new Array(); //問題の組み合わせを記録する function myRandom(n) { return Math.floor(Math.random() * n); } for(i=1; i<=10; i++){ do { n[i] = myRandom(10) + 1; m[i] = myRandom(10) + 1; }while( questionCheck(n[i],m[i]) ) document.writeln('<tr><td>' + i + '</td><td>' + n[i] + ' + ' + m[i] + ' =</td>'); document.writeln(' <td><input type="text" name="a' + i + '" size="3"></td>'); document.writeln(' <td><input type="text" name="c' + i + '" size="3" readonly></td></tr>'); } function check() { var i, ok=0, ng=0; // i: for の制御変数, ok: 正答数, ng: 誤答数. for (i=1; i<=10; i++) { if (Number(document.f.elements["a" + i].value) == n[i]+m[i]) { document.f.elements["c" + i].value = "○"; ok++; } else { document.f.elements["c" + i].value = "×"; ng++; } } document.f.ok.value = ok; document.f.ng.value = ng; } function questionCheck(n,m) { //問題が被っていたらtrueを返す var i; //i:ループ用 var mn = ""+n+m; //mn:nとmを文字列にしたもの for(i=0;questions[i]!==undefined;i++) { if(mn == questions[i]) { //問題が被ったら return true; } } questions[i] = mn; return false; } // --> </script> </table> <input type="button" value="答え合わせ" onclick="check();"> <!-- イベントハンドラ check() を呼び出す.--> 正答数:<input type="text" name="ok" size="3" readonly> 誤答数:<input type="text" name="ng" size="3" readonly> </form> 先生からのコメントは >一応できていますが,せっかく,n, m を配列にして,問題の数値を保存するようにしたのに,別途 questions を用意して,そちらを使うようにしているので,ややちぐはぐな印象を受けます. ということでした・・ n, m を配列にして、問題の数値を保存するようにして、そのあとどうしたらいいのでしょうか よろしくお願い致しますっ

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

そんなにくわしくないれべるですが、おなじようなミスをおかしたことがあるので。 HTML5 なのか、そうでないのかにより、あまかったりきびしかったり。 form 要素には、action 属性が必須。(HTML5なら略可) その name 属性は、そろそろ id へ。 table 要素の border は?(HTML5ならさらにだめ) <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> 意味合いからすると、th 要素がふさわしいのでは? table 要素の中に、script 要素が出現してはだめ。 script要素の中に、"</" がふくまれるとだめなときがある。 グローバル変数の使用は、極力控えましょう。 document.f.elements これは、 document.forms[~].elements とかにしましょう(.item(n)まで必要か?) questions[i]!==undefined undefined は、書き換えることができます。強固なものにするために判定は ('undefined' !== typeof questions[i]) <input type="button" value="答え合わせ"~ の、input 要素は、インライン要素なので、ブロック要素で囲みましょう (HTML5ならOK) イベントハンドラの第1引数は、イベントオブジェクトと決まっています。なので、 onclick="check(event);" のようしましょう。 呼ばれた側で以下のようにすると、必要なものを得ることができます。 function check (event) { var inp = event.target || event.srcElement; //これでイベントの発生した要素が拾える var doc = inp.ownerDocument; // document の得かた var form = inp.form; // form 要素の取得 } HTML 4.01 でイベント属性を用いるならば、 必ず HTTP ヘッダで Content-Script-Type を指定しなければなりません <meta http-equiv="Content-Script-Type" content="text/javascript"> でも、HTML5では、不要。 きっとあなたの先生は、気づいているとおもいますが・・・。 (関係のないことですが、質問のタイトルは、どのような質問なのか一目で判ると助かる。) (また質問の本質からずれた)

その他の回答 (1)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

このロジック、フローチャート描いたり、箇条書きしたりして、案を練って無いでしょう。 行き当たりばったり感、出まくりだよ。 モーストアンバリアブルライン(MUL)はこれ! 「var mn = ""+n+m; //mn:nとmを文字列にしたもの」 比較のためだけに数字を文字列に変換してるとこと。 あと、今回は、1~10 の整数だから成功してるけど、1~11 の整数なら、『1+11』と『11+1』の区別がつかないよ? せっかく questions って名前をつけたんだから、問題をそのまま保存して、問題文を表示するところで、再利用しちゃえば? var mn = n + '+' + m; //mn:n+mという文字列 出力部分は 「document.writeln('<tr><td>' + i + '</td><td>' + n[i] + ' + ' + m[i] + ' =</ td>');」 の代わりに、 document.writeln('<tr><td>' + i + '</td><td>' + questions[i] + ' =</ td>'); とする。 まだまだ、きもちわるいところ、多数で、ロジックの練り直しから始めたほうがいいけど、あとは、先生を信じて委ねることにするね!

関連するQ&A

  • Java Scriptで・・・

    <form name="f"> <table border> <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> <script type="text/javascript"> <!-- // 変数・関数の定義 var i, n1, n2; var s = new Array(11); // 正解を保存する配列 s[0] ~ s[10] function myrandom(n) { return Math.floor(Math.random() * n); } function check() { var i, ok=0, ng=0; for (i=1; i<=10; i++) { if (document.f.elements["s" + i].value == s[i]) { document.f.elements["c" + i].value = "○"; ok++; } else { document.f.elements["c" + i].value = "×"; ng++; } } document.f.ok.value = ok; document.f.ng.value = ng; } for(i=1; i<=10; i++){ n1 = myrandom(10) + 1; n2 = myrandom(10) + 1; s[i] = n1 + n2; document.writeln('<tr>'); document.writeln('<td>' + i + '</td>'); document.writeln('<td>' + n1 + ' + ' + n2 + ' =</td>'); document.writeln('<td><input type="text" name="s' + i + '" size="3"></td>'); document.writeln('<td><input type="text" name="c' + i + '" size="3"></td>'); document.writeln('</tr>'); } // --> </script> </table> <input type="button" value="答え合わせ" onclick="check();"> 正答数:<input type="text" name="ok" size="3"> 誤答数:<input type="text" name="ng" size="3"> </form> このようなプログラムを作ったのですが、この表示される10問が全部異なる問題となるようにするにはどうすればいいでしょうか?

  • 計算の結果が出るようにしたいのですが・・・

    title>JavaScript Task 9-1pre</title> <h1>計算練習プログラム (2)</h1> <form name="f"> <table border> <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> <script type="text/javascript"> <!-- // 変数・関数の定義 var i, n, m,sol,ans; // for の制御変数, 問題 new Array// 正解を保存する配列を用意する // (配列用の変数を宣言し,配列オブジェクトを作ってその変数に代入する) function myRandom(n) { // 0 ~ n-1 の乱数を返す関数 return Math.floor(Math.random() * n);} // 「答え合わせ」ボタンのイベントハンドラ function check() { var i,t,f,ans; // 変数の宣言.反復の制御変数iと,正答数・誤答数を数える変数(初期値0)を含む for(i=1; i<=10; i++){// 以下を10回反復 (i = 1 ~ 10) document.f.si.value if(ans == sol); document.f.ci.value("○"); i+1; // 第i問の解答(ユーザーの入力)が(配列に保存した)第i問の正解と一致した場合 // 第i問の正誤欄に○を表示 // 正答数に1加える else(ans== sol); document.f.ci.value;("×"); i+1;} // そうでない(正解と一致しなかった)場合 // 第i問の正誤欄に×を表示 // 誤答数に1加える // 反復パートの終わり // 正答数・誤答数の表示 for(i=1; i<=10; i++){ // 第i問の問題の作成 n = myRandom(10) + 1; m = myRandom(10) + 1; n + m = sol; if (ans==sol) else if // 第i問の正解を(用意した配列に)保存 i = new Array(11) for(1=1; 1<=10; i++) i[1] = n + m; i[2] = n + m; i[3] = n + m; i[4] = n + m; i[5] = n + m; i[6] = n + m; i[7] = n + m; i[8] = n + m; i[9] = n + m; i[10] = n + m // 第i問の問題等の表示 (B-2) document.writeln('<tr><td>' + i + '</td><td>' + n + ' + ' + m + ' =</td>'); document.writeln(' <td><input type="text" name="s' + i + '" size="3"></td>'); document.writeln(' <td><input type="text" name="c' + i + '" size="3" readonly></td></tr>'); } // --> </script> </table> <input type="button" value="答え合わせ" onclick="check();"> 正答数:<input type="text" name="ok" size="3" readonly> 誤答数:<input type="text" name="ng" size="3" readonly> </form> ここまで作ってみました。 はじめまして。chiaken22と申します。 ここで行き詰ってしまいました。 もしかしたら間違っているかもしれません。 //のあとはどうすればよいかを書いたものなのですが、 なかなかわからなくて困っています。 間違っている場合は指摘していただきたいです。 正解でなくてもヒントでもよいので教えてください。 すみません。 よろしくお願い致します。

  • Javascriptで自動計算の合計の式でエラー

    度々すみません。 前回こちらで質問させて頂きましたものです。 http://okwave.jp/qa/q8737139.html 教えて頂いた内容を確認してフォームの合計を表示するところまでは出来たのですが、合計する列をひとつ増設した所、D列の合計は教えて頂いた式で合計が無事表示されたのですが、C列の合計が合計ではなく文字の並びが表示されてしまいました。 色々調べてみたのですが、この現象の原因がよくわかりません。 何かエラーがあるのでしょうか。 お知恵を貸して頂けると嬉しいです。 宜しくお願いします。 <スクリプト> <script type='text/javascript'> function keisan(){ var price1 = (document.form1.a1.value) * (document.form1.b1.value) * (document.form1.c1.value); document.form1.金額1.value = price1 ; var price2 = (document.form1.a2.value) * (document.form1.b2.value) * (document.form1.c2.value); document.form1.金額2.value = price2 ; var price3 = (document.form1.a3.value) * (document.form1.b3.value) * (document.form1.c3.value); document.form1.金額3.value = price3 ; document.form1.total.value = price1 + price2 + price3; var f1 = (document.form1.c1.value); document.form1.c1.value = f1 ; var f2 = (document.form1.c2.value); document.form1.c2.value = f2 ; var f3 = (document.form1.c3.value); document.form1.c3.value = f3 ; document.form1.ctotal.value = f1 + f2 + f3; } </script> <HTMLソース> <body> <form method="post" name="form1"> <table width="473" border='1'> <tr> <td align='center'>&nbsp;</td> <td align='center'>A</td> <td align='center'>B</td> <td align='center'>C</td> <td align='center'>D</td> </tr> <tr> <td>1</td> <td><input type='text' name='a1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c1' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額1' style='width:100px' /></td> </tr> <tr> <td>2</td> <td><input type='text' name='a2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c2' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額2' style='width:100px' /></td> </tr> <tr> <td>3</td> <td><input type='text' name='a3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c3' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額3' style='width:100px' /></td> </tr> <tr> <td colspan="3" align='right'>合計</td> <td><input type='text' name='ctotal' style='width:25px' /></td> <td><input type='text' name='total' style='width:100px' /></td> </tr> </table> </form> </body>

  • 追加したテキストボックスとテキストエリアの数の制御

    下記のようにテキストボックスとテキストエリアの数をボタンを押すことによって増やしていきます。 で、テキストボックスとテキストエリアは最大10個までとしたいのですが、どのようにしたらいいでしょうか? あとテキストエリアを追加していくとテキストエリアとテキストエリアの間が詰まってしまいます。間を空ける方法はないでしょうか? <script type="text/javascript"> function myAdd(){ var oTR=document.createElement("tr"); var c=count("mat"); var names=["mat","qua"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } var tag_num = 4; function myTextAreaAdd(){ var oTag = document.createElement("textarea"); oTag.setAttribute("name", "foo" + tag_num++); var oDiv = document.getElementById("area"); oDiv.appendChild(oTag); } </script> </head> <body><form method="post" enctype="multipart/form-data" action="check.php"> <table id="t0" border> <tbody> <tr><td><input type="text" name="mat1" value=""></td> <td><input type="text" name="qua1" value=""></td> </tr> <tr><td><input type="text" name="mat2" value=""></td> <td><input type="text" name="qua2" value=""></td> </tr> <tr><td><input type="text" name="mat3" value=""></td> <td><input type="text" name="qua3" value=""></td> </tr> <tr><td><input type="text" name="mat4" value=""></td> <td><input type="text" name="qua4" value=""></td> </tr> </tbody> </table> <input type="button" value="追加する" onClick="myAdd()"> <br /> <span id="area"> <textarea name="foo1"></textarea> <textarea name="foo2"></textarea> <textarea name="foo3"></textarea> <textarea name="foo4"></textarea> </span><br /> <input type="button" value="追加する" onClick="myTextAreaAdd()"><br /> </form>

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • javascriptが得意な方ご教授ください。for文関連です。

    以下のソースにて?の部分を配列番号と同等にしたいのですが、うまくいきません。 やりたいことは配列のEbox_Div[0]~[3]の中にnullが入った場合その配列番号に対応するテキストボックスのEmail0~3には"空"と代入したいのです。 ※hiddenタグのEmail_hの値はTBLの状態によって異なります。 <script language="javascript"> function bunkatsu(){ var Ebox_Div = new Array(); Ebox_Div = document.myform.Email_h.value.split(","); document.myform.Email0.value = Ebox_Div[0]; document.myform.Email1.value = Ebox_Div[1]; document.myform.Email2.value = Ebox_Div[2]; document.myform.Email3.value = Ebox_Div[3]; for (i=0; i<4; i++){ if(Ebox_Div[i] == null){ document.myform.Email?.value = "空"; } } } </script> <body bgcolor="white" onLoad="bunkatsu()"> <form name="myform"> <input type="hidden" name="Email_h" value="aho,baka"> <table border="0" width="100%"> <tr><td width="10%">アドレス1</td><td width="90%"><input type="text" name="Email0" size="60"></td></tr> <tr><td width="10%">アドレス2</td><td width="90%"><input type="text" name="Email1" size="60"></td></tr> <tr><td width="10%">アドレス3</td><td width="90%"><input type="text" name="Email2" size="60"></td></tr> <tr><td width="10%">アドレス4</td><td width="90%"><input type="text" name="Email3" size="60"></td></tr> </table> よろしくお願い致します。

  • POSTすると配列の数がおかしくなる

    matとquaとhowtoをそれぞれ4つPOSTしているのですが、POSTされたデータを受け取るとmat4つ、qua5つ、howto5つと数がおかしくなります。 なぜかわかりません。とくにインクリメントしていないのに増えます。 教えて下さい。 <script type="text/javascript"> function myAdd(obj){ var max=15; var c=count("mat"); if(c>=max) return false; var oTR=document.createElement("tr"); var names=["mat","qua"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); if(c>=max-1) obj.disabled=true; } function count(name){ var tags=document.getElementsByTagName("input"); var ta=document.getElementsByTagName("textarea"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); if(tags){ for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } } if(ta){ for(var i=0;i<ta.length;i++){ if(ta[i].name.match(reg)){ c++; } } } return c; } function myTextAreaAdd(obj){ var max=15; var c=count("howto"); if(c>=max) return false; var oTag = document.createElement("textarea"); oTag.setAttribute("name", "howto" + tag_num++); var oDiv = document.getElementById("area"); oDiv.appendChild(oTag); if(c>=max-1) obj.disabled=true; } </script> </head> <body> <form method="post" enctype="multipart/form-data" action="check.php"> <textarea name="explain"></textarea> <table id="t0" border> <tbody> <tr> <td><input type="text" name="mat1" /></td> <td><input type="text" name="qua1" /></td> </tr> <tr> <td><input type="text" name="mat2" /></td> <td><input type="text" name="qua2" /></td> </tr> <tr> <td><input type="text" name="mat3" /></td> <td><input type="text" name="qua3" /></td> </tr> <tr> <td><input type="text" name="mat4" /></td> <td><input type="text" name="qua4" /></td> </tr> </tbody> </table> <input type="button" value="追加する" onClick="myAdd(this)"> <br /> <span id="area"> <textarea name="howto1"></textarea> <textarea name="howto2"></textarea> <textarea name="howto3"></textarea> <textarea name="howto4"></textarea> </span><br /> <input type="button" value="追加する" onClick="myTextAreaAdd(this)"> <input type="submit" value="送る"> </form>

  • HTMLのinputタグ数が変わる場合のjavascript処理

    パターンA ~HTML~ <input type='text' name='a[]'> <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; var n = document.form1.elements["a"][1].value ; パターンB ~HTML~ <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; ---(1) パターンAではエラーが出ないのですが、パターンBでは(1)のところでエラーになってしまいます。 【elements["a"][0]】の部分を【elements["a"]】とすればエラーは出ません。 どうやら、inputタグが1つしかない場合は、Javascriptでは配列として認識しないようです。 できれば、inputタグが1つの場合でも複数の場合でも、同じJavascriptコードを使いたいのですが、何か良い方法はありますか?

  • javascriptのtextbox

    こんばんは。 <html> <body> <center> <br><br> <form name="fuji"> TEXT BOX<br> <input type="text" name="tex"> </form> <SCRIPT type="text/javascript"> var i; i="ABC" document.write("<input type='button' value='↑を変数iに代入' onClick='i=(document.fuji.tex);'>"); document.write("<br><input type='button' value='表示' onClick='document.write(i);'>"); </SCRIPT> </center> </body> </html> でテキストボックスの中身を表示させたいのですが、 上手くいきません。どうすればいいのでしょうか。 また、変数を使わずに直接テキストボックスの中身を 表示させる事はできるのでしょうか。 教えてください。

  • firefoxでjavascriptが…

    現在、二つのセレクトボックス間でデータのやり取りをするjavascriptを製作しております。ieでは問題なく動作するのですが、firefoxだと セレクトボックスの移動ボタンを押すと余計なものまで消えてしまいます。どなたかご教授ください。 javascript↓ var master_selected_value; var master_selected_text; var user_selected_value; var user_selected_text; function select_master(a){ master_selected_text = a.master_list.options[a.master_list.selectedIndex].text; master_selected_value = a.master_list.options[a.master_list.selectedIndex].value; } function select_user(a){ user_selected_text = a.select_list.options[a.select_list.selectedIndex].text; user_selected_value = a.select_list.options[a.select_list.selectedIndex].value; } function portlet_move(a,b,c){ if( 1 == b ){ var sw = 0; for( n = 0 ; n < a.select_list.length ; n ++ ){ if( a.select_list.options[n].text == master_selected_text){ sw = 1; } } if( sw == 0 && master_selected_text != null ){ a.select_list.options[a.select_list.length] = new Option(master_selected_text,master_selected_value); } }else{ if( null != user_selected_text ){ for( n = a.select_list.selectedIndex ; n < a.select_list.length - 1; n ++ ){ a.select_list.options[n] = a.select_list.options[n + 1]; } a.select_list.length = a.select_list.length - 1; } user_selected_text = null; user_selected_value = null; } } function data_sum(a,b){ var buff = ""; for( n = 0 ; n < a.select_list.length ; n ++ ){ buff = buff + a.select_list.options[n].value; } a.select_list_data.value = buff; a.type.value = b; a.submit(); } function data_send(a,b){ var buff = ""; for( n = 0 ; n < a.select_list.length ; n ++ ){ buff = buff + a.select_list.options[n].value; } a.select_list_data.value = buff; a.type.value = b; a.send.value = "true"; a.submit(); } html↓ <form method="post" action="test.php" onsubmit="return moveItemSelect('ListBox1','ListBox2');"> <input type="hidden" name="type" value=""> <input type="hidden" name="select_list_data" value=""> <input type="hidden" name="send" value=""> <table> <tr> <td> <select name="type" onchange="data_sum(this.form,'recommended');"> <option value="a" selected="selected">a</option> <option value="b">b</option> </select> </td> <td></td> <td></td> </tr> <tr> <td> <select size="10" name="master_list" onchange="select_master(this.form);"> <option value="1">1</option> <option value="2">2</option> </select> </td> <td> <input type="button" class="button" value="→" onclick="portlet_move(this.form,1,2);"> <br /> <input type="button" class="button" value="←" onclick="portlet_move(this.form,2,1);"> </td> <td> <select size="10" name="select_list" onchange="select_user(this.form);"> <option value="1">1</option> </select> </td> </tr> <tr> <td colspan="3"><input type="button" class="button" value="登録" onclick="data_send(this.form,'recommended_write');" /></td> </tr> </table> </form>