Javascript 加载新页面时,计数器变量不会持续存在

Javascript 加载新页面时,计数器变量不会持续存在,javascript,counter,Javascript,Counter,我想在javascript中使用计数器变量,就像带有计时器的静态变量一样。计数器必须每秒减少1。我正在进行在线考试。回答问题时,新问题出现在同一页上。当计数器变量初始化为new questionmeans new page时,我的问题就开始了。计数器变量在新页面上不存在…建议任何解决方案 <script language="JavaScript"> function ExamTimer() { if ( typeof ExamTimer.counter == 'undefi

我想在javascript中使用计数器变量,就像带有计时器的静态变量一样。计数器必须每秒减少1。我正在进行在线考试。回答问题时,新问题出现在同一页上。当计数器变量初始化为new questionmeans new page时,我的问题就开始了。计数器变量在新页面上不存在…建议任何解决方案

<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引擎在每次页面加载时都会执行代码,因此每当页面重新加载时,客户端变量都会丢失

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

通过GET或POST请求的服务器端变量
无论您选择什么方法,请记住,它都需要对用户不必要的操作具有足够的弹性。

Javascript变量并不意味着比当前页面负载寿命长。浏览器的Javascript引擎在每次页面加载时都会执行代码,因此每当页面重新加载时,客户端变量都会丢失

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

通过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>

使用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>

如何加载新问题?通过页面刷新还是通过ajax调用?使用ajax可以最大限度地减少页面的重新加载我不得不问——为什么要存储经过的秒数而不是开始时间?通过存储服务器的启动时间,你的应用程序将提供更真实的结果,并且不会因插入服务器等而受到任何扭曲。你如何加载新问题?通过页面刷新还是通过ajax调用?使用ajax可以最大限度地减少页面的重新加载我不得不问——为什么要存储经过的秒数而不是开始时间?通过存储服务器启动时间,您的应用程序将提供更真实的结果,并且不会因插入服务器等而受到任何扭曲。