请理解以下问题更像是学术问题,因为我试图理解我要描述的问题背后的逻辑。
很多时候我看过有倒数计时器的网站(特别是关于即将上映的电影)。这告诉页面访问者关于电影在影院上映的日期。
我的问题是,即使没有人访问该网页,他们如何编码以便运行?例如,JavaScript代码仅在加载页面时起作用。这将使倒数计时器每次都重置。我真的很困惑人们如何访问这些网站,倒数计时器已经开始工作。
我只需要逻辑而不是某些特定的编码。谢谢大家。
答案 0 :(得分:2)
JS计数器仅在用户查看页面时运行。这里发生了什么:
var timeLeft = "<?php echo getTimeLeft($eventId); ?>";
setInterval()
所以基本上是的,当你重新进入页面时,JS计数器会被重置。但它的开始时间总是不同的。
还有另一种选择,当您需要在没有人工干预的情况下进行定期操作时(例如,每晚00:00为订阅者发送电子邮件)。
然后我们使用Cron Job(搜索crontab linux
)。您提供必须执行的文件路径以及在时间到来时提交的服务器调用。
答案 1 :(得分:2)
在这里,我制作了一个简单的倒数计时器,你可以看看并没有什么特别的,你只需要知道结束日期并设置它。剩下的就是数学问题;]。
function countDown (endDate) {
var dateEnd = new Date(endDate); // set future date
var curDate = new Date(); // set current date
var diff = dateEnd.getTime() - curDate.getTime(); // get the difference
var leftSecs = diff/1000;
var oneMinSecs = 60;
var oneHourSecs = 60 * oneMinSecs;
var oneDaySecs = oneHourSecs * 24;
var estDays = Math.floor(leftSecs/oneDaySecs);
var estHours = Math.floor((leftSecs - (estDays*oneDaySecs))/oneHourSecs);
var estMins = Math.floor((leftSecs - ((estDays*oneDaySecs)+(estHours*oneHourSecs)))/60);
var estSecs = Math.floor(leftSecs - ((estDays*oneDaySecs)+(estHours*oneHourSecs)+(estMins*oneMinSecs)));
return [estDays, estHours, estMins, estSecs];
}
var timerEl = document.getElementById('timer');
setInterval(function() {
var est = countDown('07-15-2017');
timerEl.innerHTML = 'days: ' + est[0]
+ ' hours: ' + est[1]
+ ' mins: ' + est[2]
+ ' sec: ' + est[3] + ' left to 07-15-2017';
}, 1000);
&#13;
<div id="timer"></div>
&#13;