加载新页面时计数器变量不持久

Counter variable does not persist when loading a new page

本文关键字:变量 不持久 计数器 新页面 加载      更新时间:2023-09-26

我想在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引擎在每次页面加载时执行代码(尽管大多数浏览器都会缓存编译后的代码),因此每当页面重新加载时,客户端变量都会丢失。

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

  1. DOM storage
  2. <
  3. 饼干/gh>
  4. 通过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>