dポイントプレゼントキャンペーン実施中!

複数のページ(html)で、下記のようにスコアをだしています。
1~3ページの合計スコアを4ページ目に出したいのですが、全く方法がわからなく、困っています。
ページ1~3のスコアを書きこむ箇所は、s1,s2,s3にしています。
どうか教えてください。よろしくお願いいたします。
---------------------------------------------------------------
function dispscore() {
var score=0;
if (document.form1.q1[0].checked) {
score += 10;
}
else{
score += 0;
}
document.form1.s1.value=score
}
// -->
</SCRIPT>

</HEAD>
<BODY bgcolor="#ffffff">
<FORM name="form1">

<TD width="415" height="44" align="right"><B><FONT color="#000000" size="2"><INPUT size="10" name="s1" type="text" style="border-width : 0px 0px 0px 0px;border-style : solid solid solid solid;"></FONT></B></TD>

A 回答 (3件)

そのフォームとコードの抜粋ではどういう移動の仕方をしてるのかなどわからないので方法だけ。



一般的に値のページ持ち越しの方法は

■GETで渡す
データチェックした後にフォームのaction やアンカーのhrefなどの移動方法のURIを操作。
具体的にはURIに ?xxx (1データの場合) としてデータをJavascriptでくっつけて書きかえる。
1データなら受け取り側(次のページ)では var str = location.search.replace('?',''); で str にはいる。
この方法の欠点はロケーションバーに値が見えるので、合計点が常に見える。


■クッキーを使う方法
データチェックしたあとに
document.cookie = "UrTotal=" + score;
とすれば、クッキーに UrTotal=10 などの値が格納される。
ブラウザを閉じるまで有効であれば良いでしょうから期限は不要。

受け取り側(次のページでは)
document.cookie でとれる全クッキーデータから UrTotal=数値 にマッチする部分を取り出す。
データが単純な数値のみなら
var str = document.cookie.match(/UrTotal=([0-9]*)/)[1];
の様な雑な取り方でも特に問題ないと思う。
この方法の欠点はクッキーを拒否されたら無効。


■フレーム化
全体の構造をフレーム化するは面倒でしょうから、
設問部分のブロックをiframeにして出題ページや最終ページを読ませて使う。

iframeを持つ親ページでは
<script type="text/javascript">var Total = 0; </script>
<iframe frameborder="0" src="1.html"></iframe>
としておき、このiframe内に読み込ませる各ページで使うスクリプトでは、
合計値を parent.Total という親ページの変数を読み書きする事が可能。

JavaScriptのみで値を持ち越す時はフレーム化が一番便利で固いかも。
フレームが嫌いなら無理。


と言った感じです。
    • good
    • 0

複数のページを、別ウィンドウで開いているなら、ウィンドウ名を利用して参照できます。



フレームなどで別にしている場合は、フレーム名を利用すれば参照できます。
    • good
    • 0

複数のページってどうやって関連づいているのでしょうか?

この回答への補足

test-1.htmlのform1に一問一答を掲載して、正解はvalueで10点、その他は0点にしています。
同様に、test-2.html・test-3.htmlがあり、この3つのページの合計点をtest-4.htmlに表示したいと思っています。
どうぞよろしくお願いいたします。

補足日時:2008/03/13 17:06
    • good
    • 0

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