我在我的项目中设置了一个倒计时系统,用户按小时输入他们想要保留的时间。即1、2、3、4小时等。然后开始倒数计时器,并在完成时通知他们。我在网上找到了一个非常不错的网站,但是它只针对剩余秒数进行倒计时。我想知道是否有人知道如何操纵此代码来显示hrs:minutes。
我已经尝试过w3schools,但是由于实际给定的未来时间而无法正常工作
<!-- $_row["Time"] returns the number of hours hence must multiply by 3600 to get it in terms of seconds for this example to work -->
<?php $remain= $_row["Time"] * 3600; ?>
<script>
function countDown(secs,elem) {
var element = document.getElementById(elem);
element.innerHTML = "Time Remaining "+secs+" seconds";
if(secs < 1) {
clearTimeout(timer);
element.innerHTML = '<h2>Your Time is up!</h2>';
element.innerHTML += '<p>Please evacuate the parking space as soon as possible</p><br>';
element.innerHTML += '<a href="Home.php">Return to Home</a>';
}
secs--;
var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
}
</script>
<div id="status"></div>
<script>countDown(<?php echo $remain ?>,"status");</script>
答案 0 :(得分:1)
继续我的评论...
“我在网上找到了一个非常不错的人”-不,您没有。实际上,您可能发现了最坏的想象。将字符串传递给
setTimeout
?确切地说是依靠setTimeout
吗? (提示:现在也不是,现在也没有指定)。最重要的是,“结束”条件甚至没有正确完成,因为它试图在设置之前清除超时...
尝试这样的方法。
function countDown(secs,elem) {
var element = document.getElementById(elem);
var targetTime = Date.now() + secs*1000;
var timer;
function formatTime(secs) {
var hours = Math.floor(secs/3600);
var minutes = Math.floor(secs/60)%60;
var seconds = secs%60;
var pad = function(n) {return n<10 ? "0"+n : n;};
return hours+":"+pad(minutes)+":"+pad(seconds);
}
function tick() {
var timeleft = Math.floor((targetTime - Date.now()) / 1000);
element.innerHTML = "Time Remaining: "+formatTime(timeleft);
if( timeleft < 0) {
element.innerHTML = "Time up!";
clearInterval(timer);
}
}
timer = setInterval(tick, 200); // higher numbers are less precise
tick(); // perform first update immediately
}
这将使用实际时间来确保结束时间是应该的时间!
答案 1 :(得分:0)
使用这样的代码
row_number()