Javascript 计时器通过提交问题立即打开和关闭,不允许学生尝试考试

Javascript 计时器通过提交问题立即打开和关闭,不允许学生尝试考试,javascript,Javascript,请任何人帮帮忙,因为我的电子考试的倒计时停止了,我不知道到底发生了什么。。。计时器将读取零(hh:min:sec)并自动提交学生问题,而不允许他们回答问题,从而给他们(学生)评分为零。谢谢 function countDown() { sec--; if (sec == -01) { sec = 59; min = min - 1; if(min==-01) { min=59; hour=hour-1; }else

请任何人帮帮忙,因为我的电子考试的倒计时停止了,我不知道到底发生了什么。。。计时器将读取零(hh:min:sec)并自动提交学生问题,而不允许他们回答问题,从而给他们(学生)评分为零。谢谢

function countDown() 
{
      sec--;
  if (sec == -01) {
    sec = 59;
min = min - 1;
if(min==-01)
    {
        min=59;
        hour=hour-1;
    }else
        {
            hour=hour;
    }
  } else {
   min = min;
  }
if (sec<=9) { sec = "0" + sec; }



time = (hour<=9 ? "0" + hour : hour) + " : " + (min<=9 ? "0" + min : min) + " : " + sec + "";
if (document.getElementById) { document.getElementById('timer').innerHTML = time; }



SD=window.setTimeout("countDown();", 1000);
if (hour=='00'&& min == '00' && sec == '00') { sec = "00";min="00"; window.clearTimeout(SD); window.location=document.forms[0].action+"?fs=yes";}
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
  countDown();
});
函数倒计时()
{
第二节;
如果(秒==-01){
秒=59;
min=min-1;
如果(最小==-01)
{
最小值=59;
小时=小时-1;
}否则
{
小时=小时;
}
}否则{
min=min;
}

如果(sec我尝试了您的代码,它返回sec、min和hour变量的ReferenceError

您可以尝试声明一个全局变量,其值位于sec、min和hour变量的顶部,如下面的代码所示,并查看它是否有效:

<html>
<body>
<div id="timer"></div>
<form action="http://stackoverflow.com/">
</form>
<script>
    var sec = 0;
    var min = 1;
    var hour = 0;

    function countDown() 
    {
        sec--;

        if (sec == -01) {
            sec = 59;
            min = min - 1;

            if (min==-01) {
                min=59;
                hour=hour-1;
            } else {
                hour=hour;
            }
        } else {
            min = min;
        }

        if (sec<=9) { sec = "0" + sec; }

        time = (hour<=9 ? "0" + hour : hour) + " : " + (min<=9 ? "0" + min : min) + " : " + sec + "";
        if (document.getElementById) { document.getElementById('timer').innerHTML = time; }

        SD=window.setTimeout("countDown();", 1000);
        if (hour=='00'&& min == '00' && sec == '00') { sec = "00";min="00"; window.clearTimeout(SD); window.location=document.forms[0].action+"?fs=yes";}
    }

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        } else {
            window.onload = function() {
                if (oldonload) {
                    oldonload();
                }
                func();
            }
        }
    }

    addLoadEvent(function() {
      countDown();
    });

</script>
</body>
</html>

var-sec=0;
var min=1;
var小时=0;
函数倒计时()
{
第二节;
如果(秒==-01){
秒=59;
min=min-1;
如果(最小==-01){
最小值=59;
小时=小时-1;
}否则{
小时=小时;
}
}否则{
min=min;
}

如果(sec我尝试了您的代码,它返回sec、min和hour变量的ReferenceError

您可以尝试声明一个全局变量,其值位于sec、min和hour变量的顶部,如下面的代码所示,并查看它是否有效:

<html>
<body>
<div id="timer"></div>
<form action="http://stackoverflow.com/">
</form>
<script>
    var sec = 0;
    var min = 1;
    var hour = 0;

    function countDown() 
    {
        sec--;

        if (sec == -01) {
            sec = 59;
            min = min - 1;

            if (min==-01) {
                min=59;
                hour=hour-1;
            } else {
                hour=hour;
            }
        } else {
            min = min;
        }

        if (sec<=9) { sec = "0" + sec; }

        time = (hour<=9 ? "0" + hour : hour) + " : " + (min<=9 ? "0" + min : min) + " : " + sec + "";
        if (document.getElementById) { document.getElementById('timer').innerHTML = time; }

        SD=window.setTimeout("countDown();", 1000);
        if (hour=='00'&& min == '00' && sec == '00') { sec = "00";min="00"; window.clearTimeout(SD); window.location=document.forms[0].action+"?fs=yes";}
    }

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        } else {
            window.onload = function() {
                if (oldonload) {
                    oldonload();
                }
                func();
            }
        }
    }

    addLoadEvent(function() {
      countDown();
    });

</script>
</body>
</html>

var-sec=0;
var min=1;
var小时=0;
函数倒计时()
{
第二节;
如果(秒==-01){
秒=59;
min=min-1;
如果(最小==-01){
最小值=59;
小时=小时-1;
}否则{
小时=小时;
}
}否则{
min=min;
}
如果(sec如果小时、分钟和秒变为0,则可以使用setInterval()重复秒倒计时,然后重定向到所需页面。请查看我编写的示例代码。希望我能有所帮助

<html>
<body>
<div id="timer"></div>
<form action="http://stackoverflow.com/"></form>
<script>
    function countDown(){

        //declare and init variables
        var countDown_value = 60, //in seconds
            stopFunction = undefined, 
            countFunction = undefined, 
            date = undefined,
            remainingTime = undefined,
            timer = undefined;


        //main timer
        timer = setInterval(function(){

            //stopFunction and redirect
            stopFunction = function(){
                clearInterval(timer);

                //activate below code to redirect
                //window.location=document.forms[0].action+"?fs=yes";
                document.getElementById('timer').innerHTML = "Done"; 
            }

            //countFunction
            countFunction = function(){
                date = new Date(null);
                date.setSeconds(countDown_value);

                remainingTime = date.toISOString().substr(11, 8);
                document.getElementById('timer').innerHTML = remainingTime; 
            }

            //check if countDown_value is 0
            countDown_value-- ? countFunction() : stopFunction();       

        }, 1000); //1000 -> repeat every second

    }

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        } else {
            window.onload = function() {
               if (oldonload) {
                   oldonload();
               }
               func();
           }
       }
   }

   addLoadEvent(function() {
      countDown();
    });

</script>
</body>
</html>

函数倒计时(){
//声明和初始化变量
var倒计时\u值=60,//以秒为单位
stopFunction=未定义,
countFunction=未定义,
日期=未定义,
剩余时间=未定义,
定时器=未定义;
//主定时器
计时器=设置间隔(函数(){
//停止函数和重定向
stopFunction=函数(){
清除间隔(计时器);
//激活下面的代码以重定向
//window.location=document.forms[0]。操作+“?fs=yes”;
document.getElementById('timer').innerHTML=“完成”;
}
//计数函数
countFunction=函数(){
日期=新日期(空);
日期设置秒(倒计时值);
remainingTime=date.toISOString().substr(11,8);
document.getElementById('timer').innerHTML=remainingTime;
}
//检查倒计时值是否为0
倒计时_值--?countFunction():stopFunction();
},1000);/1000->每秒重复一次
}
函数addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!=“函数”){
window.onload=func;
}否则{
window.onload=函数(){
if(oldonload){
oldonload();
}
func();
}
}
}
addLoadEvent(函数(){
倒计时();
});
如果小时、分钟和秒变为0,您可以使用setInterval()重复秒倒计时,然后重定向到所需页面。请查看我编写的示例代码。希望我有所帮助

<html>
<body>
<div id="timer"></div>
<form action="http://stackoverflow.com/"></form>
<script>
    function countDown(){

        //declare and init variables
        var countDown_value = 60, //in seconds
            stopFunction = undefined, 
            countFunction = undefined, 
            date = undefined,
            remainingTime = undefined,
            timer = undefined;


        //main timer
        timer = setInterval(function(){

            //stopFunction and redirect
            stopFunction = function(){
                clearInterval(timer);

                //activate below code to redirect
                //window.location=document.forms[0].action+"?fs=yes";
                document.getElementById('timer').innerHTML = "Done"; 
            }

            //countFunction
            countFunction = function(){
                date = new Date(null);
                date.setSeconds(countDown_value);

                remainingTime = date.toISOString().substr(11, 8);
                document.getElementById('timer').innerHTML = remainingTime; 
            }

            //check if countDown_value is 0
            countDown_value-- ? countFunction() : stopFunction();       

        }, 1000); //1000 -> repeat every second

    }

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        } else {
            window.onload = function() {
               if (oldonload) {
                   oldonload();
               }
               func();
           }
       }
   }

   addLoadEvent(function() {
      countDown();
    });

</script>
</body>
</html>

函数倒计时(){
//声明和初始化变量
var倒计时\u值=60,//以秒为单位
stopFunction=未定义,
countFunction=未定义,
日期=未定义,
剩余时间=未定义,
定时器=未定义;
//主定时器
计时器=设置间隔(函数(){
//停止函数和重定向
stopFunction=函数(){
清除间隔(计时器);
//激活下面的代码以重定向
//window.location=document.forms[0]。操作+“?fs=yes”;
document.getElementById('timer').innerHTML=“完成”;
}
//计数函数
countFunction=函数(){
日期=新日期(空);
日期设置秒(倒计时值);
remainingTime=date.toISOString().substr(11,8);
document.getElementById('timer').innerHTML=remainingTime;
}
//检查倒计时值是否为0
倒计时_值--?countFunction():stopFunction();
},1000);/1000->每秒重复一次
}
函数addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!=“函数”){
window.onload=func;
}否则{
window.onload=函数(){
if(oldonload){
oldonload();
}
func();
}
}
}
addLoadEvent(函数(){
倒计时();
});

非常感谢dee ronin,在声明变量后,它仍然不起作用!您是否尝试过调试倒计时函数,看看秒、分钟和小时变量的值是多少。是的,我尝试过,但它仍然不起作用,或者我复制了主脚本,以便您可以看看是否有解决方案?@Epasarello可以吗请看一看?请注意,脚本一直在工作,但只是停止了这么多dee ronin,在声明变量后,它仍然不工作!您尝试过调试吗