我希望我的主页在特定时间(下午1点)每天更换一次。
该页面有一个24小时倒数计时器,当它达到零时,我想要一个新页面加载,计时器再次启动。
我了解如何在特定时间后刷新页面
<script>
setTimeout(function(){
window.location='Page2.html';
}, 5000);
</script>
但不是如何在一天的特定时间(下午1点)实现这一目标。
答案 0 :(得分:5)
您可以尝试使用获取页面加载/刷新的当前时间。然后计算毫秒直到下午1点。并使用它来设置setTimeout
。我建议使用像moment这样的库来进行时间计算。
在html中加载片刻:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
在JS中:
// time right now
var now = moment.now();
// set refresh hour to 1pm
var nextRefresh = moment.now().hour(13).minute(0).second(0).millisecond(0);
// check if is or after 1pm
if (now.hour >= 13) {
nextRefresh.add(1, 'days'); // add 1 day
}
setTimeout(function() {
console.log('next 1pm');
}, nextRefresh.diff(now));
@Stoycho Trenchev是对的。您可能希望在setInterval
中使用86400000
毫秒来调用setTimeout
。这样,您的页面每天都会刷新。
答案 1 :(得分:2)
你需要setInterval而不是setTimeout,你需要以毫秒为单位计算24h:)
答案 2 :(得分:2)
这里你只是一个fyi JavaScript使用浏览器的时间,所以只是因为它在下午1点你不会在下午1点用户所在。
var intervalId = window.setInterval(checkTime, 500);
function checkTime() {
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
if(h == 13 && m == 0 && s == 0) return window.location='Page2.html';
}
答案 3 :(得分:1)
阿。有点像?
<script>
function getTime() {
var date = new Date()
var time = date.getTime();
var hours = time.getHours();
var minutes = time.getMinutes();
var seconds = time.getSeconds();
var time = {'hours': hours, 'minutes': minutes, 'seconds': seconds};
}
setInterval(function() {
var time = getTime();
if (time.hours === 13 && time.minutes === 0) {
window.location = 'Page2.html';
}
}, 500);
</script>
答案 4 :(得分:1)
你需要setTimeout设置一个计时器和Date来计算计时器在触发之前需要多长时间。
var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);