Ну может кто поймет
const factBlocks = document.querySelectorAll('.fact_block');
const limitationElement = document.querySelector('.limitation');
const endBlock = document.querySelector('.fact_end');
const blocks = Array.from(factBlocks);
function getShownBlocksData() {
const shownBlocksData = localStorage.getItem('shownBlocks');
return shownBlocksData ? JSON.parse(shownBlocksData) : { blocks: [], lastGenerationTime: null };
}
function saveShownBlock(blockId) {
const shownBlocksData = getShownBlocksData();
shownBlocksData.blocks.push(blockId);
shownBlocksData.lastGenerationTime = new Date().toISOString();
localStorage.setItem('shownBlocks', JSON.stringify(shownBlocksData));
}
function removeShowClass() {
blocks.forEach(block => block.classList.remove('show'));
limitationElement.classList.remove('show');
}
function shouldShowLimitation() {
const shownBlocksData = getShownBlocksData();
if (shownBlocksData.lastGenerationTime) {
const lastUpdateTime = new Date(shownBlocksData.lastGenerationTime);
const currentTime = new Date();
const timeDiff = currentTime - lastUpdateTime;
return timeDiff < 2000;
}
return false;
}
function showRandomBlock() {
const shownBlocksData = getShownBlocksData();
const shownBlocks = shownBlocksData.blocks;
const availableBlocks = blocks.filter(block => !shownBlocks.includes(block.id));
if (shouldShowLimitation()) {
limitationElement.classList.add('show');
if (shownBlocks.length > 0) {
const lastShownBlockId = shownBlocks[shownBlocks.length - 1];
const lastShownBlock = blocks.find(block => block.id === lastShownBlockId);
if (lastShownBlock) {
lastShownBlock.classList.add('show');
}
}
return;
}
if (availableBlocks.length === 0) {
endBlock.classList.add('show');
} else {
const randomBlock = availableBlocks[Math.floor(Math.random() * availableBlocks.length)];
randomBlock.classList.add('show');
saveShownBlock(randomBlock.id);
}
}
removeShowClass();
showRandomBlock();
function updateMiniPicturesClass() {
// Получаем уже показанные номера из localStorage
const shownBlocksData = getShownBlocksData();
const shownBlocks = shownBlocksData.blocks;
// Перебираем все миниатюры
shownBlocks.forEach(index => {
// Форматируем ID, добавляя ведущие нули к номеру
const miniId = `mini_${index.toString().padStart(4, '0')}`;
const miniElement = document.getElementById(miniId);
// Если элемент найден, меняем его класс
if (miniElement) {
miniElement.classList.remove('fact_picture_mini');
miniElement.classList.add('fact_picture_mini_curr');
}
});
}
updateMiniPicturesClass();
function changeClass() {
let currentBlock = document.querySelector('.current');
currentBlock.classList.add('close');
}
let closeButton = document.querySelector('.close_curr');
closeButton.addEventListener('click', changeClass);
Он вот как работает
1. const factBlocks = document.querySelectorAll('.fact\_block'); - Этот код выбирает все элементы с классом 'fact_block' на веб-странице.
2. const limitationElement = document.querySelector('.limitation'); - Этот код выбирает элемент с классом 'limitation'.
3. const endBlock = document.querySelector('.fact\_end'); - Этот код выбирает элемент с классом 'fact_end'.
4. const blocks = Array.from(factBlocks); - Этот код преобразует выбранные элементы в массив.
5. function getShownBlocksData() { - Эта функция получает данные о показанных блоках из localStorage. Если данные не найдены, она возвращает пустой объект.
6. function saveShownBlock(blockId) { - Эта функция сохраняет id текущего блока в localStorage.
7. function removeShowClass() { - Эта функция удаляет класс 'show' со всех блоков и элемента 'limitation'.
8. function shouldShowLimitation() { - Эта функция определяет, следует ли показывать элемент 'limitation'. Она проверяет, прошло ли более 2 секунд с момента последнего обновления.
9. function showRandomBlock() { - Эта функция показывает случайный блок, который еще не был показан. Если элемент 'limitation' должен быть показан, он также добавляется в класс 'show'.
10. removeShowClass(); - Эта строка кода вызывает функцию removeShowClass(), чтобы удалить класс 'show' со всех блоков и элемента 'limitation'.
11. showRandomBlock(); - Эта строка кода вызывает функцию showRandomBlock(), чтобы показать случайный блок.
12. function updateMiniPicturesClass() { - Эта функция обновляет классы миниатюр, чтобы показать, какие блоки уже были показаны.
13. updateMiniPicturesClass(); - Эта строка кода вызывает функцию updateMiniPicturesClass(), чтобы обновить классы миниатюр.
14. function changeClass() { - Эта функция меняет класс текущего блока на 'close'.
15. let closeButton = document.querySelector('.close\_curr'); - Эта строка кода выбирает элемент с классом 'close_curr'.
16. closeButton.addEventListener('click', changeClass); - Эта строка кода добавляет обработчик событий на элемент 'close_curr', который вызывает функцию changeClass() при клике