Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как сделать код срабатывающий по таймеру?

Как сделать код срабатывающий по таймеру?


     26.09.2019    скрипт, таймер    jQuery, Хаки    1009

вопрос
Помогите, пожалуйста, сделать код срабатывающий по времени.
Хочу установить рекламу, которая будет работать лишь днём, а в ночное время, когда трафика практически нет, она будет отрубаться скриптом.

это кусок кода который должен появляться:
[ifxfvalue metka_3!="автоплей"]    
[desktop]
[not-group=4]
<div align="center" class="banner">
    < iframe id="adv_kod_frame" src="https://vidroll.ru/kod.php?param=555a714b3070367a505a6d43687958714863724b42772f424b3044524e5a41374674474b414163434e774946336a35314f56442b43524a4d54727970" width="100%" height="350" frameborder="0" scrolling="no" allowfullscreen="true"></ iframe >< script async type="text/javascript" src="https://vidroll.ru/player_html5/iframeobrabotchik.js"></ script > <br>
    <div align="center"> Нажмите на красный крестик, если хотите пропустить эти ознакомительные материалы. <a onclick="$(&quot;div.banner&quot;).remove();"><img align="right" src="{THEME}/images/close.png"></a>
    <a href="/index.php?do=register">Регистрация</a> избавит вас от рекламы.</div>
</div>   
[/not-group]
[/desktop]
[/ifxfvalue]


а это скрипт который может помочь, но так как я не обладаю знаниями, я не знаю как туда его уместить:

< script language="JavaScript" > day = new Date(); hour = day.getHours(); if (hour>=5 && hour<12) greeting = "Доброе утро"; else { if (hour>=12 && hour<18) greeting = "Добрый день"; else { if (hour>=18 && hour<24) greeting = "Добрый вечер"; else { if (hour>=0 && hour<5) greeting = "Доброй ночи"; } } } document.write(greeting); </ script >


Как реализовать такой код?

Ответа пока нет


15 комментариев

vitnet
PHP-developer

vitnet - 26 сентября 2019 12:18 -

<script>
var day = new Date();
var hour = day.getHours();

if( hour > 23 && hour < 6 ) $('.banner').remove(); // Удалит блок с рекламой с 24 до 6
</script>

geroin47
Юзер

geroin47 - 26 сентября 2019 13:55 -

Спасибо за помощь, но что-то то не срабатывает (. Быть может надо дождаться этого времени? И немного смущает "hour > 24". Впрочем, как я и сказал, я незнаю в ничего в этих скриптах - быть может, так оно и нужно.

dj-avtosh
PHP-developer

dj-avtosh - 26 сентября 2019 15:21 -

ну да, просто 0

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

vitnet
PHP-developer

vitnet - 26 сентября 2019 16:55 -

Время на компе перевели?
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div class="day">Loading block banner day</div>
<div class="night">Loading block banner night</div>
<script>
var day = new Date(),
    hour = day.getHours();

if( hour > 23 && hour < 6 ) {
    $('.day').remove(); // Удалит блок с рекламой с 24 до 6

    console.log('removed class day on ' + hour + ' hour');
} else if( hour < 23 && hour > 6 ) {
    $('.night').remove(); // Удалит блок с рекламой с 24 до 6

    console.log('removed class night on ' + hour + ' hour');
}
</script>
</body>
</html>

wzk
Юзер

wzk - 26 сентября 2019 18:02 -

vitnet,
очень занятно. а hour когда-нибудь примет значение > 23?

dj-avtosh
PHP-developer

dj-avtosh - 26 сентября 2019 18:56 -

ну не бывает у метода getHours класса Date - 24 часа, как и в целом в в posix-системах.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

geroin47
Юзер

geroin47 - 27 сентября 2019 11:05 -

http://joxi.net/8An7QPMfzlEMkr обе надписи отображаются, независимо от времени
http://joxi.net/DmBMwoaHJbpogr - вот код

wzk
Юзер

wzk - 27 сентября 2019 14:52 -

замените всё условие else if ( hour <= 0 && hour > 6 ) на обычный else. это так не работает. hour никогда не будет < 0 как и > 23. там не круглый циферблат в памяти, а числа от 0 до 23. сделайте условие как написал я в своем ответе. не нужен там else if, потому что у нас по сути одна проверка на время и всё остальное время мы выполняем другое действие.

wzk
Юзер

wzk - 26 сентября 2019 18:14 -


let current_date = new Date(), hour = current_date.getHours();
if ( hour >= 0 && hour < 6 ) { // с 12 ночи до 5.59 утра
	$('.day').remove() 
} else { 
	$('.night').remove() 
}

geroin47
Юзер

geroin47 - 27 сентября 2019 11:50 -

Могли бы вы, если не сложно, полностью код скрипта написать. Видимо я неправильно его встраиваю, потому что у меня ничего не получается.

geroin47
Юзер

geroin47 - 27 сентября 2019 14:31 -

очень странно, что я не могу добиться закрытия баннера по временному промежутку, потому что кнопка этот блок удаляет спокойно
<div align="center" class="banner">
    < iframe id="adv_kod_frame" src="https://vidroll.ru/kod.php?param=555a714b3070367a505a6d43687958714863724b42772f424b3044524e5a41374674474b414163434e774946336a35314f56442b43524a4d54727970" width="100%" height="350" frameborder="0" scrolling="no" allowfullscreen="true"></ iframe >< script async type="text/javascript" src="https://vidroll.ru/player_html5/iframeobrabotchik.js"></ script > <br>
<div align="center"> Нажмите на красный крестик, если хотите пропустить эти ознакомительные материалы. <a onclick="$("div.banner").remove();"><img align="right" src="{THEME}/images/close.png"></a>
    <a href="/index.php?do=register">Регистрация</a> избавит вас от рекламы.</div>
</div>

dj-avtosh
PHP-developer

dj-avtosh - 27 сентября 2019 17:57 -

Может быть что-то должно прослушивать постоянно ваш сайт, что бы каждую секунду время мониторить?

Допустим setTimeout, в который посылается информация о времени до события?


<script>
$(document).ready(function(){

showDayNight();

function showDayNight() {
    (function loop() {
        var now = new Date();

         ( now.getHours() >= 0 && now.getHours() < 6 ) && $('.banner').remove();

        now = new Date();
        var delay = 60000 - (now % 60000);
        setTimeout(loop, delay);
    })();
}

});
</script>

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

geroin47
Юзер

geroin47 - 27 сентября 2019 20:03 -

Убрал пробел перед banner и заработало!) Спасибо большое всем трём участникам, которые помогали мне, в особенности dj-avtosh. Всем лайки и плюсов в карму).
Только один маленький вопрос - будет ли он грузить или тормозить сайт, постоянно пилингуя, "прослушивая" его?

wzk
Юзер

wzk - 27 сентября 2019 20:07 -

Раз в минуту - вообще пофиг)

dj-avtosh
PHP-developer

dj-avtosh - 27 сентября 2019 20:14 -

убрал пробел - пингует раз в минуту, ничего не будет.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх