Есть baner.html
, в котором лежит:
<div class="rec" id="intro-dm">
<a rel="nofollow" target="_blank" href="https://festnext.com/">
<img id="recim" src="wow/1e25ca161855538d40b45cee2f3e27d6/IMG/banner/rec_mal.jpg" width="100%" alt="Приглашение на выступление"/></a>
</div>
Нужно чтобы код из файла вставлялся в <div class="Baner" id="baorzon"></div>
до наступления определенного времени (например 29.06.19:20:00:000 Мск).Не пользовательского времени, а общего.
Как это реализовать, чтобы в дальнейшем можно было лишь менять содержимое baner.html
, и время до которого оно видно?
На данный момент вставляю через:
<link rel="import" ...>
var link = document.querySelector('link[rel=import]');
var content = link.import.querySelector('#intro-dm');
document.body.appendChild(content.cloneNode(true));
По факту мы можем использовать время на клиенте:
В качестве примера.
// Текущая дата/время на клиенте.
const DATE_NOW = new Date();
// Блок для вывода информации.
const BAORZON = document.querySelector('#baorzon');
// Массив мероприятий.
const REMAININGS = [{
"title": "Посмотреть тур",
"link": "https://ru.stackoverflow.com/tour",
"image": "https://via.placeholder.com/180x180/FFFF00/000000?text=Картинка+1",
"expired_at": "2019-07-01 3:45" // UTC+0
}, {
"title": "Почитать справку",
"link": "https://ru.stackoverflow.com/help",
"image": "https://via.placeholder.com/180x180/000000/FFFFFF?text=Картинка+2",
"expired_at": "2019-07-01 20:05" // UTC+0
}, {
"title": "Подправить даты в ответе",
"link": "https://ru.stackoverflow.com/help",
"image": "https://via.placeholder.com/180x180/0000FF/808080?text=Картинка+3",
"expired_at": "2020-07-01 16:01" // UTC+0
}];
// Ищем и отрисовываем первое мероприятие,
// срок которого еще не истек.
renderRemaining(findRemaining(REMAININGS));
// // Либо подгружаем файл `*.json`.
// fetch('remainings.json')
// .then((response) => response.json())
// .then(function(remainings) {
// renderRemaining(findRemaining(remainings));
// })
// .catch(function(err) {
// console.error('Не удалось загрузить список мероприятий', err);
// });
// Поиск первого мероприятия, срок которого еще не истек.
function findRemaining(remainings) {
return remainings.find(function(remaining) {
// Получим дату, когда истекает срок мероприятия
// в формате UTC + смещение по клиентскому времени.
let dt = dateFromString(remaining.expired_at);
// Проверяем, что дата мероприятия истекла/не истекла.
// Если истекла - `true`, не истекла - `false`.
let expired = (dt - DATE_NOW) < 0;
// Нам нужно мероприятие "не просрочка".
// Возвращаем булево значение. Не запутайтесь!
console.log('expired: '+expired, dt - DATE_NOW, dt, DATE_NOW);
return !expired;
});
}
// Отрисовка мероприятие на странице.
function renderRemaining(remaining) {
// Если нашли активное мероприятие.
if (remaining) {
let wrapper = document.createElement('div');
let link = document.createElement('a');
let img = document.createElement('img');
wrapper.id = 'intro-dm';
wrapper.classList.add('rec');
link.href = remaining.link;
link.target = '_blank';
img.src = remaining.image;
img.alt = remaining.title;
img.title = remaining.title;
BAORZON.appendChild(wrapper);
wrapper.appendChild(link);
link.appendChild(img);
} else {
BAORZON.innerHTML = 'Нет активных мероприятий.'
}
}
// Парсинг даты/времени из формата YYYY-MM-DD HH:MM
// в формат UTC + смещение по клиентскому времени.
// Либо используйте `new Date(dateString);`, где `dateString` в формате
// http://es5.javascript.ru/x15.9.html#x15.9.1.15
function dateFromString(str) {
const matches = str.match(/^(\d{4})\-(\d{1,2})\-(\d{1,2})\s+(\d{1,2}):(\d{1,2})$/);
if (6 !== matches.length) return false;
return new Date(Date.UTC(
parseInt(matches[1], 10), // год
// исчисление месяцев начинается с нуля
parseInt(matches[2], 10) - 1, // месяц
parseInt(matches[3], 10), // день
parseInt(matches[4], 10), // час
parseInt(matches[5], 10) // минут
));
}
<div class="baner" id="baorzon"></div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
В Java есть функцияsplit которая разделяет строку вокруг регулярного выражения и возвращает массив строк, так вот есть ли в C++ (стандартной библиотеке)...
Пытаюсь подключиться к базе данных, созданной через Visual Studio (Средства -> Подключиться к базе данных)
Как можно реализовать вывод ошибки lua например: "Syntax error in scriptlua 4 line"