通过Javascript错误设置考试时间30分钟?
我正在为web考试页面写作,在那里我必须设置30分钟的考试时间。因此我使用通过Javascript错误设置考试时间30分钟?,javascript,php,Javascript,Php,我正在为web考试页面写作,在那里我必须设置30分钟的考试时间。因此我使用onload和settimeout函数检查30分钟是否结束,问题页面是否关闭并转到完成页面。我想添加当前的30分钟。但这不起作用,不要转到finish.php <body onload="time()"> <!-- question code --> <div id="time"></div><!-- show time --> </body>
onload
和settimeout
函数检查30分钟是否结束,问题页面是否关闭并转到完成页面。我想添加当前的30分钟。但这不起作用,不要转到finish.php
<body onload="time()">
<!-- question code -->
<div id="time"></div><!-- show time -->
</body>
JS
<script>
function time(){
var j = new Date();
var hr = j.getHours();
var sec = j.getSeconds();
var min = j.getMinutes();
var m = min + 30;//set 30 minutes exam times
if (m === min) {
location.href = "finish.php";
}
document.getElementById('time').innerHTML = hr + ":" + min + ":" + sec;
setTimeout(function() {
time()
}, 1000);
}
</script>
功能时间(){
var j=新日期();
var hr=j.getHours();
var sec=j.getSeconds();
var min=j.getMinutes();
var m=min+30;//设置30分钟的检查时间
如果(m==min){
location.href=“finish.php”;
}
document.getElementById('time').innerHTML=hr+“:“+min+”:“+sec;
setTimeout(函数(){
时间()
}, 1000);
}
您正在为m
每超时一次分配新值。您应该只初始化一次,m
而且minute
从0-59
开始,所以你不能总是检查它是否等于m+30
,这是错误的做法
据说在服务器端执行此超时总是更好的,但在客户端,有足够的方法可以绕过此超时
function time(){
setTimeout(function() {
location.href = "finish.php";
}, 30*60*1000);
setInterval(function() {
var j = new Date();
var hr = j.getHours();
var min = j.getMinutes();
var sec = j.getSeconds();
document.getElementById('time').innerHTML = hr + ":" + min + ":" + sec;
}, 1000);
}
函数时间(){
var time=60*1;//将1替换为30分钟
分钟,秒;
setInterval(函数(){
分钟=parseInt(时间/60)
秒=parseInt(时间%60);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
document.getElementById('time').innerHTML=minutes+“:”+seconds;
时间--;
如果(时间<0){
location.href=“finish.php”;
}
}, 1000);
}
请包含一段JSFIDLE代码为什么不直接设置超时(function(){location.href=“finish.php”},30*60*1000);嗯,UI每一秒钟都在更新。getElementById('time')。innerHTML=hr+“:“+min+”:“+sec代码>时间显示(setInterval)不起作用,setTimeout起作用。谢谢您的回答