加载新页面时计数器变量不持久
Counter variable does not persist when loading a new page
我想在javascript中使用计数器变量,如带有计时器的静态变量。计数器必须每秒减少1。我正在准备网上考试。在回答一个问题时,新的问题出现在同一页上。我的问题开始时,计数器变量初始化的新问题(意味着新的页面)。计数器变量不能在新页面上持久存在…建议解决方案
<script language="JavaScript">
function ExamTimer()
{
if ( typeof ExamTimer.counter == 'undefined' )
{
ExamTimer.counter = 30000; // 30 min
}
else
{
ExamTimer.counter = ExamTimer.counter-1;
if(ExamTimer.counter<=0)
{
alert("exam finish");
}
setTimeout(ExamTimer, 1000);
}
window.onload=ExamTimer;
</script>
Javascript变量并不意味着比当前页面加载的时间更长。浏览器的Javascript引擎在每次页面加载时执行代码(尽管大多数浏览器都会缓存编译后的代码),因此每当页面重新加载时,客户端变量都会丢失。
将值从一个页面传递到另一个页面有几种常用的方法:
- DOM storage <
- 饼干/gh>
- 通过GET或POST请求的服务器端变量
无论您选择什么方法,都要记住它需要足够的弹性来应对用户不必要的操作。
使用ajax从一个页面传递值到另一个页面。使用会话保存最后的剩余时间,它被传递到下一页
<script language="JavaScript">
function ExamTimer()
{
if ( typeof ExamTimer.counter == 'undefined' )
{
ExamTimer.counter = <cfoutput>#session.RemainTime#</cfoutput>;
}
else
{
ExamTimer.counter = ExamTimer.counter-1;
$.get('linktosend.cfm',{counter:ExamTimer.counter},function(responseText)
{
// value of ExamTimer.counter send to linktosend.cfm and store in session.RemainTime
});
if(ExamTimer.counter<=0)
{
alert("exam finish");
}
setTimeout(ExamTimer, 1000);
}
window.onload=ExamTimer;
</script>
相关文章:
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 变量不递增如何I'我喜欢html按钮点击的时候
- 重新定义的变量不;t在AngularJS中绑定
- javascript美元符号变量不起作用
- Url中的JavaScript变量不起作用
- PHP:运行后变量不工作“;如果“;命令
- 如果变量不是't已传递给函数.这是正确的方式吗
- 全局变量不起作用
- 彩色变量不起作用
- 变量不起作用(不知道为什么)javascript
- 局部数组变量不是数组
- 在具有动态值的函数上使用的变量不允许我通过 ajax 发送表单
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 比较 2 个数组并得到这些变量不匹配
- 将 jQuery 函数分配给变量不起作用,但包装它不起作用
- 变量不是't在循环中更改JavaScript
- 从服务器加载的javascript变量不是在chrome中定义的,而是在firefox中定义的
- AngularJS的作用域变量不会在具有隔离作用域的指令中持久存在
- 如何正确地创建Javascript原型,使类变量不会在实例化之间持久存在
- 加载新页面时计数器变量不持久