2

我正在为大学做一个实验,涉及计算参与者阅读一个简单网页的时间。由于实验的性质,我不能在他们访问页面之前告诉他们我正在计时,所以在下一页我需要告诉他们他们正在计时,然后提供一个选项,如果他们选择退出反对他们的数据使用 Python CGI 脚本传递到数据库。

在第一页的顶部,我有这个:

<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.");
}

当我单击链接转到第二页时,“sec”变量只是重置为 0。如果我从 .js 文件中取出声明并将其放在引用 .js 文件之前的单独脚本标记中在第一个 HTML 页面中,第二个 HTML 页面根本无法识别变量“sec”。如何存储时间,以便我可以将其发送到数据库或从第二个 HTML 页面中删除它?

4

2 回答 2

4

一种方法是使用查询字符串。

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

timer2.html?time=252如果花费了 252 秒,它们将被发送到例如。然后使用How can I get query string values in 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 回答