Javascript 如何在php中即使页面刷新也不重置多重计时器?
我已经检查了来自的答案,因此如何才能将其用于多个数据。例如,为了让我设置特定服务的计时器。这是我的剧本Javascript 如何在php中即使页面刷新也不重置多重计时器?,javascript,php,jquery,timer,Javascript,Php,Jquery,Timer,我已经检查了来自的答案,因此如何才能将其用于多个数据。例如,为了让我设置特定服务的计时器。这是我的剧本 <script type="text/javascript"> //var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30); function addMinutes(date, minutes) {
<script type="text/javascript">
//var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
var dat = new Date();
//var tim = addMinutes(dat, 15);
//console.log(tim);
function fixIntegers(integer)
{
if (integer < 0)
integer = 0;
if (integer < 10)
return "0" + integer;
return "" + integer;
}
$(function () {
$('.btn-start-timer').click(function(){
var i = window.setInterval(function(){
var future = addMinutes(dat, 60);
//var future = new Date("Dec 12 2013 22:10:00 GMT-0800 (Pacific Standard Time) ");
var now = new Date();
//console.log(tim);
var difference = Math.floor((future.getTime() - now.getTime()) / 1000);
var seconds = fixIntegers(difference % 60);
difference = Math.floor(difference / 60);
var minutes = fixIntegers(difference % 60);
difference = Math.floor(difference / 60);
var hours = fixIntegers(difference % 24);
difference = Math.floor(difference / 24);
var days = difference;
/* $(this).parent().parent().find('.timer #seconds').text(seconds + "s");
$(this).parent().parent().find('.timer #minutes').text(minutes + "m");
$(this).parent().parent().find('.timer #hours').text(hours + "h");
$(this).parent().parent().find('.timer #days').text(days + "d");*/
$(".timer #seconds").text(seconds + "s");
$(".timer #minutes").text(minutes + "m");
$(".timer #hours").text(hours + "h");
$(".timer #days").text(days + "d");
if(hours == 0 && minutes == 0 && seconds == 0){
window.clearInterval( i );
alert('times up');
}
}, 1000);
});
});
</script>
//var minutes2=currentTime.setMinutes(currentTime.getMinutes()+30);
功能添加分钟数(日期,分钟){
返回新日期(Date.getTime()+分钟*60000);
}
var dat=新日期();
//var tim=增加分钟数(dat,15);
//控制台日志(tim);
函数整数(整数)
{
if(整数<0)
整数=0;
if(整数<10)
返回“0”+整数;
返回“+”整数;
}
$(函数(){
$('.btn启动计时器')。单击(函数(){
var i=window.setInterval(函数(){
var future=增加分钟数(数据,60);
//var future=新日期(“2013年12月12日22:10:00 GMT-0800(太平洋标准时间)”;
var now=新日期();
//控制台日志(tim);
var difference=Math.floor((future.getTime()-now.getTime())/1000);
var秒=固定整数(差%60);
差值=数学下限(差值/60);
var分钟数=固定整数(差值%60);
差值=数学下限(差值/60);
var小时数=固定整数(差异%24);
差异=数学楼层(差异/24);
var天数=差异;
/*$(this.parent().parent().find('.timer#seconds').text(seconds+“s”);
$(this.parent().parent().find('.timer#minutes').text(minutes+“m”);
$(this.parent().parent().find('.timer#hours').text(hours+“h”);
$(this.parent().parent().find('.timer#days').text(days+“d”)*/
$(“.timer#seconds”).text(秒+秒);
$(“.timer#minutes”).text(分钟+“m”);
$(“.timer#hours”).text(小时+“h”);
$(“.timer#days”).text(days+“d”);
如果(小时=0和分钟=0和秒=0){
窗口。清除间隔(i);
警报(“超时”);
}
}, 1000);
});
});
以下是我对html的看法:
<table cellpadding="10">
<tr>
<th>Timer</th>
<th> </th>
</tr>
<tr>
<td class="timer">
<span id="days"></span>
<span id="hours"></span>
<span id="minutes"></span>
<span id="seconds"></span>
</td>
<td><button type="button" class="btn-start-timer">Start Now</button></td>
</tr>
<tr>
<td class="timer">
<span id="days"></span>
<span id="hours"></span>
<span id="minutes"></span>
<span id="seconds"></span>
</td>
<td><button type="button" class="btn-start-timer">Start Now</button></td>
</tr>
</table>
计时器
从现在开始
从现在开始
如何确定启动后不重置的时间?使用事件:
在卸载之前
检测用户何时离开页面。然后,发送一个ajax请求。要处理您的请求,只需将任何信息保存在post.php中的$\u会话变量中
// posted.php
session_start();
if ( isset ( $_POST['hours'] && isset ( $_POST['minutes'] && isset ( $_POST['seconds'] && )
{
$_SESSION['hours'] = $_POST['hours'];
$_SESSION['minutes'] = $_POST['minutes'];
$_SESSION['seconds'] = $_POST['seconds'];
}
然后,当加载/刷新新页面时,javascript中应该包含初始化的变量
var hours = <?php if ( isset($_SESSION['hours']) ) echo $_SESSION['hours'] else 0; ?>;
var minutes = <?php if ( isset($_SESSION['minutes']) ) echo $_SESSION['minutes'] else 0; ?>;
var seconds = <?php if ( isset($_SESSION['seconds ']) ) echo $_SESSION['seconds '] else 0; ?>;
使用
每个计时器都有自己的计时器 在$\u会话或$\u COOKIE['time']或本地存储中保存小时、分钟、秒
然后从中检索值 那么
post.php
在做什么?你到底有什么问题?@MichaelVilleneuve我怎样才能在启动后留出时间不重置?如果时间到了,它会更新服务的状态。我没有使用任何框架,它只是原始的PHP,让你知道我在做什么是我之前的问题“因为这次我没有使用countdown.js
。谢谢,我会试试这个。除非调用ignore\u user\u abort(true),否则在页面退出之前可能没有足够的时间完成这个ajax请求代码>位于PHP的顶部script@MichaelVilleneuve由于它是多个,如果用户再次单击另一个开始按钮
我认为会话的值将被新值替换?不知道为什么有人投了反对票-不认为这很糟糕?!!不管怎样,我不明白你说的“既然它是多重的”是什么意思?如果他单击该按钮,您只需发送一个新的Ajax请求,其所有值均为0。例如,$\u会话['hours']的值是否不会被替换?是否单击多个按钮?我会投票表决的
$_SESSION['hours']
$_SESSION['idOfTimer']['hours']