1

我想在 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>
4

2 回答 2

3

Javascript 变量并不意味着比当前页面加载更有效。浏览器的 Javascript 引擎会在每次页面加载时执行代码(尽管大多数浏览器会缓存已编译的代码),因此每当页面重新加载时客户端变量都会丢失。

有几种常见的方法可以将值从一个页面传递到另一个页面:

  1. DOM 存储
  2. 饼干
  3. 通过 GET 或 POST 请求的服务器端变量

无论您选择哪种方法,请记住它需要对用户不必要的操作具有足够的弹性。

于 2013-03-17T11:02:54.147 回答
2

使用 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>
于 2013-03-18T11:39:19.053 回答