我想在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>
答案 0 :(得分:3)
Javascript变量并不意味着比当前页面加载更长。浏览器的Javascript引擎在每次加载页面时执行代码(尽管most browsers cache the complied code),因此每当页面重新加载时,客户端变量都会丢失。
有几种常用方法可以将值从一个页面传递到另一个页面:
无论您选择哪种方法,请记住它需要具有足够的弹性以适应用户不必要的操作。
答案 1 :(得分:2)
使用ajax传递值从一个页面到另一个页面。使用session来保持last last泰国传递到下一页
<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>