Javascript 如何在单击“刷新”按钮后从“重新启动”禁用计时器?
我想问一下。如何在单击“刷新”按钮后从“重新启动”禁用计时器?这是我的代码:Javascript 如何在单击“刷新”按钮后从“重新启动”禁用计时器?,javascript,php,timer,Javascript,Php,Timer,我想问一下。如何在单击“刷新”按钮后从“重新启动”禁用计时器?这是我的代码: session_start(); $result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'"); $rec2 = mysql_fetch_array($result2); <script language="JavaScript"> var hoursleft = <?php echo $rec2['testDuratio
session_start();
$result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'");
$rec2 = mysql_fetch_array($result2);
<script language="JavaScript">
var hoursleft = <?php echo $rec2['testDurationHour'];?>;
var minutesleft = <?php echo $rec2['testDurationMin'];?>;
var secondsleft = 0;
end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
function cd(){
now = new Date();
diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
var hr = diff.getHours()-1;
if (min < 10){
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
if(now >= end){
window.alert("Time is up. Press OK to continue.");
document.forms[0].submit();
}
else
{
document.getElementById("cdtime").innerHTML = min + ":" + sec;
setTimeout("cd()", 10);
}
}
window.onload = cd;
session_start();
$result2=mysql_查询(“从testNum='$testNum''的测试中选择*);
$rec2=mysql\u fetch\u数组($result2);
var hoursleft=;
var minutesleeft=;
var secondsleft=0;
结束=新日期();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
函数cd(){
现在=新日期();
diff=现在结束;
diff=新日期(diff);
var sec=diff.getSeconds();
var min=diff.getMinutes();
var hr=diff.getHours()-1;
如果(最小值<10){
最小值=“0”+最小值;
}
如果(第10节){
秒=“0”+秒;
}
如果(现在>=结束){
window.alert(“时间到了,按OK继续”);
document.forms[0]。提交();
}
其他的
{
document.getElementById(“cdtime”).innerHTML=min+“:”+sec;
setTimeout(“cd()”,10);
}
}
window.onload=cd;
如何在用户单击“刷新”按钮后禁用计时器重新启动?我知道这是一个快速而肮脏的答案。但我认为这已经足够了。 您可以使用会话来检查正在进行的测试编号,因此,每当针对相同的测试编号刷新测试页面时,剩余的小时和分钟数将设置为0(这将阻止您的时间再次重新启动),如果不是(您的测试页面未被刷新),您可以从数据库中按必要的值填充它。注意:我使用“added”表示附加代码,在编写代码的一些修改时使用“modified”。见下文
session_start();
// added
$hoursLeft = 0;
$minutesLeft = 0;
$result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'");
$rec2 = mysql_fetch_array($result2);
// added
if(!isset($_SESSION['testnum']) || $_SESSION['testnum'] <> $testnum) {
$_SESSION['testnum'] = $testnum;
$hoursLeft = $rec2['testDurationHour'];
$minutesLeft = $rec2['testDurationMin'];
} else {
$msg = "It seems you've been refreshing your page and it's prohibited. Press OK to continue";
}
<script language="JavaScript">
// modified
var hoursleft = <?php echo $hoursLeft ?>;
// modified
var minutesleft = <?php echo $minutesLeft ?>;
var secondsleft = 0;
end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
function cd(){
now = new Date();
diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
var hr = diff.getHours()-1;
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
if(now >= end) {
// modified
var msg = <?php if (isset($msg)) echo '"'.$msg.'"'; else echo '"'."Time is up. Press OK to continue.".'"'; ?>;
window.alert(msg);
document.forms[0].submit();
}
else {
document.getElementById("cdtime").innerHTML = min + ":" + sec;
setTimeout("cd()", 10);
}
}
window.onload = cd;
session_start();
//增加
$hoursLeft=0;
$minutesleet=0;
$result2=mysql_查询(“从testNum='$testNum''的测试中选择*);
$rec2=mysql\u fetch\u数组($result2);
//增加
如果(!isset($_会话['testnum'])|$_会话['testnum']$testnum){
$\会话['testnum']=$testnum;
$hoursLeft=$rec2['testDurationHour'];
$minutesLeft=$rec2['testDurationMin'];
}否则{
$msg=“您似乎一直在刷新页面,并且被禁止。请按“确定”继续”;
}
//修改
var hoursleft=;
//修改
var minutesleeft=;
var secondsleft=0;
结束=新日期();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
函数cd(){
现在=新日期();
diff=现在结束;
diff=新日期(diff);
var sec=diff.getSeconds();
var min=diff.getMinutes();
var hr=diff.getHours()-1;
如果(最小值<10){
最小值=“0”+最小值;
}
如果(第10节){
秒=“0”+秒;
}
如果(现在>=结束){
//修改
var msg=;
window.alert(msg);
document.forms[0]。提交();
}
否则{
document.getElementById(“cdtime”).innerHTML=min+“:”+sec;
setTimeout(“cd()”,10);
}
}
window.onload=cd;