- 締切済み
Javascriptの結果の出し方で困っています。
自分のサイトにチェッカーを入れたくて下記の記述を書きました。 <script> function calc(f){ var sum=0; for(var i=0;i<f.length;i++){ if(f[i].type=="radio" && f[i].checked) sum+=parseInt(f[i].value); } f.judge.value=sum; } </script> <form action="chekker/" method="post"> <ol> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q1" id="Q1_1" value="2"><label for="Q1_1">はい</label> <input type="radio" name="Q1" id="Q1_2" value="0"><label for="Q1_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q2" id="Q2_1" value="2"><label for="Q2_1">はい</label> <input type="radio" name="Q2" id="Q2_2" value="0"><label for="Q2_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q3" id="Q3_1" value="2"><label for="Q3_1">はい</label> <input type="radio" name="Q3" id="Q3_2" value="0"><label for="Q3_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q4" id="Q4_1" value="2"><label for="Q4_1">はい</label> <input type="radio" name="Q4" id="Q4_2" value="0"><label for="Q4_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q5" id="Q5_1" value="2"><label for="Q5_1">はい</label> <input type="radio" name="Q5" id="Q5_2" value="0"><label for="Q5_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q6" id="Q6_1" value="2"><label for="Q6_1">はい</label> <input type="radio" name="Q6" id="Q6_2" value="0"><label for="Q6_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q7" id="Q7_1" value="2"><label for="Q7_1">はい</label> <input type="radio" name="Q7" id="Q7_2" value="0"><label for="Q7_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q8" id="Q8_1" value="2"><label for="Q8_1">はい</label> <input type="radio" name="Q8" id="Q8_2" value="0"><label for="Q8_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q9" id="Q9_1" value="2"><label for="Q9_1">はい</label> <input type="radio" name="Q9" id="Q9_2" value="0"><label for="Q9_2">いいえ</label> <br><br> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q10" id="Q10_1" value="2"><label for="Q10_1">はい</label> <input type="radio" name="Q10" id="Q10_2" value="0"><label for="Q10_2">いいえ</label> </ol> <center> <p><font size="+1" color="#FF0000"><b>採点!!</b></font></p> <input type="text" name="judge" value="0" SIZE="10"> <input type="button" value="採点する" onClick="calc(this.form)"> </p></center> </form> はいが2点、いいえが0点とします。 この記述方法だと、テキストボックスに点数の合計が記載されてしまいます。 別ページに点数の合計を呼び出したいのですが、どうすればいいのでしょうか。 ※ページの内容で中身が変わるわけではなく、点数の結果を表示したいです。 ※呼び出す際のコードも記載していただけたらありがたいです ※結果のページをkekka.htmlとします。 初心者なのでどうしたらいいのか分かりません。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- babu_baboo
- ベストアンサー率51% (268/525)
2かいしつもんするより、くだらないことだけど <br><br>のように、ふくすうかいつづくのは、ひじょうに へん! querySelectorAll とか Array.reduce がつかえないとうごかないよ <!DOCTYPE html> <title></title> <form action="kekka.html" method="get"> <ol> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q1" id="Q1_1" value="2"><label for="Q1_1">はい</label> <input type="radio" name="Q1" id="Q1_2" value="0"><label for="Q1_2">いいえ</label> <li>aaaaaaaaaaaaa<br> <input type="radio" name="Q2" id="Q2_1" value="2"><label for="Q2_1">はい</label> <input type="radio" name="Q2" id="Q2_2" value="0"><label for="Q2_2">いいえ</label> </ol> <input type="submit"> <input type="button" value="open" onclick=" var rdo = this.form.querySelectorAll ('input[type=radio][name^=Q]:checked'); var sum = Array.prototype.reduce.call (rdo, function (r, a) { return a.checked ? +a.value+r: r }, 0); var w = window.open ('kekka.html', 'kekka'); alert('転記します') w.document.getElementById ('hoge').value=sum; "> </form> -- <!DOCTYPE html> <title>kekka</title> <input type="text" id="hoge" value=""> <script> for (var s=0,r=/=(\d+)/g,p;p=r.exec(location.search);s+=+p[1]); document.getElementById ('hoge').value = s; </script>
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
JavaScriptを一切使わず、PerlやPHPでCGIアプリケーションをつくられてはどうでしょうか。 CGIやPHPなどで検索すれば、希望されているフォームの作り方を解説しているサイトがたくさん見つかると思います。 JavaScriptでやるのなら、 <form>のactionをkekka.htmlにして、 http://home.wi-wi.jp/scripts/log/2008031801/index.html ここを参考にしてみてください。
- yasu2011
- ベストアンサー率0% (0/0)
こんばんは。 <input type="button" value="採点する" onClick="calc(this.form)"> を少しいじって・・・calc関数の後にwindow.openで別画面を開いてはどうでしょう。 <input type="button" value="採点する" onClick="calc(this.form);window.open('kekka.html','windowname');"> 開いた後は、onloadの処理に親画面の点数を取得するという感じでどうでしょうか。 onload="document.form.judge.value=opener.parent.documen.form.judge.value;" 初心者とおっしゃてますが、サンプル画面の程度のものができているようなので、上記の処理はそんな手間はかからないと思います。
補足
onload="document.form.judge.value=opener.parent.documen.form.judge.value;" 上記の記載方法があまり理解できなくて… 今は「採点する」のボタンを押したときにkekka.htmlを開いてくれますが、どうしても点数が出ません。 点数をテキストボックス内に出そうと思うとどういった記述をすればいいのかが困っています。 わざわざ回答して頂いたのに理解できなくてすみません。