こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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とします。
初心者なのでどうしたらいいのか分かりません。よろしくお願いします。

投稿日時 - 2011-06-29 17:09:34

QNo.6843241

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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>

投稿日時 - 2011-06-30 11:07:02

ANo.2

JavaScriptを一切使わず、PerlやPHPでCGIアプリケーションをつくられてはどうでしょうか。
CGIやPHPなどで検索すれば、希望されているフォームの作り方を解説しているサイトがたくさん見つかると思います。

JavaScriptでやるのなら、
<form>のactionをkekka.htmlにして、
http://home.wi-wi.jp/scripts/log/2008031801/index.html
ここを参考にしてみてください。

投稿日時 - 2011-06-30 02:53:13

ANo.1

こんばんは。

<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;"

初心者とおっしゃてますが、サンプル画面の程度のものができているようなので、上記の処理はそんな手間はかからないと思います。

投稿日時 - 2011-06-29 20:36:02

補足

onload="document.form.judge.value=opener.parent.documen.form.judge.value;"

上記の記載方法があまり理解できなくて…


今は「採点する」のボタンを押したときにkekka.htmlを開いてくれますが、どうしても点数が出ません。
点数をテキストボックス内に出そうと思うとどういった記述をすればいいのかが困っています。

わざわざ回答して頂いたのに理解できなくてすみません。

投稿日時 - 2011-06-30 08:49:12