#javascript #html #jquery #css #time
Вопрос:
Я пытаюсь заставить div отображаться на веб-сайте в течение 1 минуты, а затем исчезает на 9 минут, и цикл повторяется.
Я хотел бы использовать что-то вроде приведенного ниже, а не использовать setTimeout().
//gets the current time.
var d = new Date();
if(d.getHours() >= 7 amp;amp; d.getHours() <= 15 ){
$(".open").show();
$(".closed").hide();
}
else {
$(".closed").show();
$(".open").hide();
}
Таким образом, div будет отображаться с интервалом в каждые 10 минут, поэтому на 00:00, 00:10, 00:20, 00:30, 00:40, 00:50 проходит каждый час в течение 1 минуты, и после этой минуты div автоматически исчезает в прямом эфире на веб-странице в течение 9 минут.
Возможно ли это?
Комментарии:
1. Если вы не используете
setTimeout()
илиsetInterval()
, что вызовет повторный запуск кода?2. Почему ты не хочешь использовать
setTimeout()
?3. Извините, я бы хотел, чтобы вы не могли просто обновить страницу, чтобы сбросить процесс и сразу показать div. Я бы хотел, чтобы div показывался раз в 10 минут, но в режиме реального времени
4. Когда страница загрузится, проверьте текущее время и рассчитайте время ожидания на основе этого.
Ответ №1:
let timer;
let interval = 3000;
//You can change interval to your desireable MILLISECONDS
let showTime = 500;
//change this for div showing time
//Each div will show for 100 ms
let mainTimer = (60 - (new Date().getMinutes())) * 60000;
$(".divI").hide();
setTimeout(function() {
let counter = true;
htmlTimer();
//runs function every 'interval' MS
setInterval(function() {
htmlTimer();
$(".divII").hide();
$(".divI").show();
//hides main content div and shows close div every 'showTime' ms
setTimeout(function() {
htmlTimer();
$(".divII").show();
$(".divI").hide();
}, showTime);
}, interval);
}, mainTimer);
function htmlTimer() {
clearTimeout(timer);
let count = 0;
timer = setInterval(function() {
count ;
$('.timer').html((count * 200) 'ms');
}, 200);
}
let remaingTime = setInterval(function() {
mainTimer = mainTimer - 200;
$('.currentTime').html(new Date().toString());
$('.remainingTime').html('Remaining Time:' (mainTimer / 60000).toFixed(1) 'Mins');
}, 200);
setTimeout(function() {
clearTimeout(remaingTime);
$('.currentTime').html('');
$('.remainingTime').html('');
}, mainTimer)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='divI'>Div-1--mainContent</div>
<div class='divII'>Div-2--closeDiv</div>
<br>
<div class='timer'></div>
<div class='currentTime'></div>
<div class='remainingTime'></div>
Комментарии:
1. Как это синхронизируется с :10, :20, :30 и т.д. минутами после часа?
2. Это просто чередует скрытие и отображение каждого интервала, он не отображается в течение 1 минуты и скрывается в течение следующих 9 минут.
3. Я синхронизируюсь только с минутами, если вам нужна функция для запуска в определенные часы.
4. Спасибо, я буду использовать этот код, спасибо