Друзья мне уже стыдно смотреть в глаза GPT но мы ни как не можем понять друг друга.
Есть код который случайно показывает блоки присваивает стили и с ним все нормально. То есть обновил страницу он показал случайный блок, обновил показал и пока все блоки не покажет будет показывать, но это не суть он работает и молодец.
Но нужно что бы возможность увидеть случайный блок была раз в 10 часов. То есть человек зашел на сайт ему показали случайный блок и если он зайдет еще раз или обновит страницу а 10 часов не прошло ему код не отрабатывал свои функции. Прошло 10 часов можно будет показать ему новый случайный блок (ну то есть что бы функции кода отработали) если он зашел или обновил страницу и вот такой интервал так сказать должен блокировать показы, один раз в 10 часов
Плюс если он попытается обновить или зайти в промежуток этих "запрещеных" 10 часов то ему показывали другой блок, а именно блокус классом limitation добавился класс show
вот сам код
// Получаем все блоки и сохраняем их в массив
const blocks = Array.from(document.querySelectorAll('.fact_block'));
// Функция для получения уже показанных блоков из localStorage
function getShownBlocks() {
const shownBlocks = localStorage.getItem('shownBlocks');
return shownBlocks ? JSON.parse(shownBlocks) : [];
}
// Функция для сохранения ID показанного блока
function saveShownBlock(blockId) {
const shownBlocks = getShownBlocks();
shownBlocks.push(blockId);
localStorage.setItem('shownBlocks', JSON.stringify(shownBlocks));
// Проверяем, есть ли у блока класс 'fact_picture_mini_curr'
if (document.getElementById(blockId).classList.contains('fact_picture_mini_curr')) {
// Если есть, то сохраняем его в localStorage
const factPictureMiniCurrIds = JSON.parse(localStorage.getItem('fact_picture_mini_curr')) || [];
localStorage.setItem('fact_picture_mini_curr', JSON.stringify([...new Set([...factPictureMiniCurrIds, blockId])]));
}
}
// Функция для удаления класса 'show' у всех блоков
function removeShowClass() {
blocks.forEach(block => block.classList.remove('show'));
}
// Функция для выбора и показа случайного блока
function showRandomBlock() {
const shownBlocks = getShownBlocks();
const availableBlocks = blocks.filter(block => !shownBlocks.includes(block.id) && block.id.includes('fact_'));
if (availableBlocks.length === 0) {
// Показываем последний блок, если все остальные уже показаны
const lastBlock = blocks.find(block => block.id === 'full_collection');
lastBlock.classList.add('show');
} else {
// Выбираем случайный блок из доступных
const randomBlock = availableBlocks[Math.floor(Math.random() * availableBlocks.length)];
randomBlock.classList.add('show');
saveShownBlock(randomBlock.id);
// Добавляем класс 'fact_picture_mini_curr' к соответствующему блоку с id 'mini_'
const miniBlock = document.getElementById(`mini_${randomBlock.id.replace('fact_', '')}`);
if (miniBlock) {
miniBlock.classList.add('fact_picture_mini_curr');
saveShownBlock(`mini_${randomBlock.id.replace('fact_', '')}`);
}
}
}
// Удаляем класс 'show' у всех блоков и показываем новый блок
removeShowClass();
showRandomBlock();
// Проверяем, есть ли id блока с классом 'fact_picture_mini_curr' в localStorage
const factPictureMiniCurrIds = JSON.parse(localStorage.getItem('fact_picture_mini_curr')) || [];
// Если есть, то добавляем класс 'fact_picture_mini_curr' этим блокам
factPictureMiniCurrIds.forEach(id => {
document.getElementById(id).classList.add('fact_picture_mini_curr');
});
люди ) помогите если сможете )