javascript - 刷新页面时PHP Timer停止重新启动
问题描述
我的 Quiz Web 应用程序有一个计时器,但每次用户转到下一个问题或刷新页面时,计时器都会重置。
我试图将剩余时间保存到一个变量中,但我不知道。我是初学者,有些会有所帮助。
<span id="countdown" class="timer"></span>
<script>
var seconds = 15;
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds;
if (seconds == 0) {
clearInterval(countdownTimer);
header("location:account.php?q=result&eid=5cb44b236f3b1");
} else {
seconds--;
}
}
var countdownTimer = setInterval('secondPassed()', 1000);
</script>
我希望每个页面或每次用户刷新页面时都使用相同的计时器。谢谢你的时间!
解决方案
一种解决方案是使用会话变量。您所做的是存储测验开始的时间并据此进行倒计时。请注意,您只需要在第一页上设置 startTime 变量。
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
if($_SESSION["startTime"] == null)
{
$_SESSION["startTime"] = time();
}
?>
<script type="text/javascript">
// Timer script
// Get start time of quiz, current time and calculate time remaining
var startTime = "<?php echo $_SESSION["startTime"] ?>";
//...Rest of timer script.
</script>
</body>
</html>
推荐阅读
- python - 使用 lambda 或应用于具有列表内容的数据框的多列
- java - 使用 Matlab Java API 依赖构建 Spring-Boot Maven 项目
- node.js - 检查 mongodb 文档是否具有未在模式中定义的属性?
- javascript - 从函数返回的文本中删除子字符串
- apple-watch - 如何从 Apple Watch 上的高度计传感器访问原始数据?
- symfony - Symfony中具有属性长度的约束数字类型?
- node.js - Dialogflow - 使用异步/等待从数据库中读取
- java - 如何为 try-resource 和等效的突变体重构幸存的突变体?
- spring-security - 如何使用数据库中的数据丰富 Oauth2 身份验证?
- javascript - 如何处理 vue js 模板中不存在的变量?