使用计时器自动提交答案(Javascript)

使用计时器自动提交答案(Javascript),javascript,timer,submit,auto,Javascript,Timer,Submit,Auto,我正在尝试做一个计时器,它将自动提交所有的答案时,时间到了。但现在,它只是显示时间已过,并且没有重定向到最终分数页。我的答案存储在数据库中,我认为这没有关系。代码如下: $(document).ready(function() { var endTime = localStorage.getItem("endTime"); console.log(endTime); if (endTime != 'unde

我正在尝试做一个计时器,它将自动提交所有的答案时,时间到了。但现在,它只是显示时间已过,并且没有重定向到最终分数页。我的答案存储在数据库中,我认为这没有关系。代码如下:

  $(document).ready(function() {
        var endTime = localStorage.getItem("endTime");
        console.log(endTime);
        
        if (endTime != 'underfined' && endTime != null) {
            startCountdownTimer();
            //localStorage.removeItem("endTime");
        }
        
    });

    function setEndTime() {
        var currentTime = new Date().getTime();
        var endTime = new Date(currentTime + 1*60000);
        localStorage.setItem("endTime", endTime);
        // alert('Set end time ' + endTime);

        startCountdownTimer();
    }

    function startCountdownTimer() {
        // Set the date we're counting down to
        var endTime = localStorage.getItem("endTime");
        var countDownDate = new Date(endTime).getTime();

        // Update the count down every 1 second
        var x = setInterval(function() {

            // Get today's date and time
            var now = new Date().getTime();

            // Find the distance between now and the count down date
            var distance = countDownDate - now;

            // Time calculations for days, hours, minutes and seconds
            var days = Math.floor(distance / (1000 * 60 * 60 * 24));
            var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            var seconds = Math.floor((distance % (1000 * 60)) / 1000);

            // Display the result in the element with id="demo"
            document.getElementById("demo").innerHTML = days + "d " + hours + "h "
            + minutes + "m " + seconds + "s ";

            // If the count down is finished,[ I want to make it is redirecting to score page ]
            if (distance <= 0) {
                clearInterval(x);
                setTimeout("document.quiz.submit()",1);
                window.location = "http://localhost/quizzer%202/final.php"
            }
                
        },1000);
    }
$(文档).ready(函数(){
var endTime=localStorage.getItem(“endTime”);
console.log(endTime);
if(endTime!='underfined'&&endTime!=null){
startCountdownTimer();
//localStorage.removietem(“endTime”);
}
});
函数setEndTime(){
var currentTime=new Date().getTime();
var endTime=新日期(当前时间+1*60000);
setItem(“endTime”,endTime);
//警报(“设置结束时间”+结束时间);
startCountdownTimer();
}
函数startCountdownTimer(){
//确定我们倒计时的日期
var endTime=localStorage.getItem(“endTime”);
var countDownDate=新日期(endTime).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//使用id=“demo”在元素中显示结果
document.getElementById(“demo”).innerHTML=days+d+hours+h
+分钟+米+秒+秒;
//如果倒计时完成,[我想让它重定向到分数页]

如果(距离这里有一个解决方案,它使用JavaScript的本机
setTimeout
函数自动提交表单:

//以下($function(){})等价于$(document).ready(function(){)。
$(函数(){
setTimeout(函数(){
setTimeout(函数(){$('#idOfYourForm').submit()},1);
window.location=”http://localhost/quizzer%202/final.php"
},1000*60*10);//这是您的测试将持续的毫秒数。我将其设置为10分钟
});
另外,提交命令看起来不正确。因为您使用的是jQuery,所以我将向您展示jQuery的方法

  • 为你的表格做一个ID
  • $(“#idOfYourForm”)提交它。提交()
    (一个问题是你在它周围加了引号)

  • 最后一件事,当你提交一个表单时,默认的动作是你将被重定向,所以你的最后重定向不会做任何事情。对于你所做的工作,考虑使用Ajax。< /P>你的测试很容易被破解,因为你的计时器在客户端。我该怎么办?你正在使用PHP作为服务器端,对吗?是的,我正在使用PHP作为SER。你仍然可以在客户端设置计时器等等,只需确保之后(例如,你的表单持续10分钟),PHP将在10分钟后停止接受该表单,因此即使有人篡改了您的客户端脚本,他们也只是在欺骗自己,而这不会起任何作用。您可以在PHP上使用日期操纵。