2

私は大学で、参加者が簡単なWebページを読むのにかかる時間を計る実験を行っています。実験の性質上、ページにアクセスする前にタイミングを計っていることを伝えることができないため、次のページで、タイミングが合っていることを伝え、オプトアウトするオプションを提供する必要があります。 PythonCGIスクリプトを使用してデータベースに渡されるデータに反対します。

最初のページの上部にこれがあります:

<script type="text/javascript" src="timing.js">
</script>

そして下部に、次のページに移動するためのリンクがありますが、タイマーを停止するためのリンクもあります。

Click here when you are ready to proceed.
<button onclick="window.location = 'timer2.html'; stopTime()">Click Here</button>

...そして.jsファイルには次のものがあります:

var sec = 0;

function takeTime()
{
    setInterval(function(){sec += 1},1000);
}

myTime = takeTime();

function stopTime()
{
clearInterval(myTime);
}

function showTime()
{
alert("Time is " + sec + " seconds.");
}

リンクをクリックして2ページ目に移動すると、「sec」変数が0にリセットされます。.jsファイルから宣言を取り出して、.jsファイルを参照するスクリプトタグの前に別のスクリプトタグを配置すると、最初のHTMLページでは、2番目のHTMLページは変数「sec」をまったく認識しません。時間をデータベースに送信するか、2番目のHTMLページから削除できるように、時間を保存するにはどうすればよいですか?

4

2 に答える 2

4

1つの方法は、クエリ文字列を使用することです。

<button onclick="window.location = 'timer2.html?time=' + sec">Click Here</button>

timer2.html?time=252たとえば、252秒かかった場合に送信されます。次に、JavaScriptでクエリ文字列値を取得するにはどうすればよいですか?timer2.htmlでこの値を取得します。

于 2013-02-15T19:30:56.340 に答える
0

Javascript変数は、あるページの読み込みから次のページの読み込みまでその状態を維持しないため、その情報を保存する別の方法が必要になります。クエリ文字列を介して渡す以外の別の方法は、HTML5ローカルストレージです。ローカルストレージを使用すると、同じドメイン内で、あるページの読み込みから次のページの読み込みまで取得できる値をブラウザに保存できます。

たとえば、最初のページは次のとおりです。

var sec = 0;
localStorage.time = 0;

function takeTime()
{
    setInterval(function(){sec += 1},1000);
}

myTime = takeTime();

function stopTime()
{
    clearInterval(myTime);
    localStorage.time = sec;
}

function showTime()
{
alert("Time is " + sec + " seconds.");
}

そしてtimer2.htmlのどこか:

var sec = localStorage.time;
于 2013-02-15T19:36:37.933 に答える