我正在php-mysql项目中使用javascript编写一个倒数计时器,该倒数计时器可以正常工作,但是问题是,当用户与游戏进行交互时,该计时器会重新启动。我应该对php会话做些什么?
有什么想法吗?
<div>Time left = <span id="timer"></span></div>
<script>
document.getElementById('timer').innerHTML = 01 + ":" + 00;
startTimer();
function startTimer() {
var presentTime = document.getElementById('timer').innerHTML;
var timeArray = presentTime.split(/[:]+/);
var m = timeArray[0];
var s = checkSecond((timeArray[1] - 1));
if(s==59){m=m-1}
if(m<0){alert('You lose,click reset')}
document.getElementById('timer').innerHTML =m + ":" + s;
setTimeout(startTimer, 1000);
}
function checkSecond(sec) {
if (sec < 10 && sec >= 0) {sec = "0" + sec}; // add zero in front
of numbers < 10
if (sec < 0) {sec = "59"};
return sec;
}
</script>
答案 0 :(得分:0)
根据您对主要问题的评论,您可以通过多种方式“陪审团”,但我不确定它是否是您的理想解决方案。
当用户首次启动游戏并通过php操作重定向它们时,我猜这会启动初始计时器,随后与游戏的交互也会重置计时器。
您可以启动php会话并将游戏的开始时间保存到php会话变量中。然后,当页面再次加载时,检查会话/变量是否存在(如果已设置),那么我们可以根据需要执行任何操作,因为当前时间和游戏开始时间之间的差异将告诉您如何游戏已经进行了很长时间。
您可以使用以下方法将变量从php传递到JS:
let js_start_time_variable = "<?=php_start_time_variable?>";
这种解决方案不是很好。我建议使用vuejs之类的东西将整个游戏保留在一个页面应用程序中,而无需使用页面刷新到php。