MediaWiki:Test.js: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
(function () {
(function() {
     if (window.raceInfoLoaded) return;
     var initAccordions = function() {
    window.raceInfoLoaded = true;
        var accordions = document.querySelectorAll('.accordion-header');
       
        var toggleAccordion = function(e) {
            var content = this.parentNode.querySelector('.accordion-content');
            content.classList.toggle('active');
        };


    function showRaceInfo(race) {
        for (var i = 0; i < accordions.length; i++) {
        var infoBox = document.getElementById('race-info-box');
             accordions[i].addEventListener('click', toggleAccordion);
        var description = document.getElementById(race);
        if (description) {
             infoBox.innerHTML = description.innerHTML;
            infoBox.style.display = 'block';
         }
         }
     }
     };
 
    var addCardHover = function() {
        var cards = document.querySelectorAll('.species-card');
       
        var handleHover = function(isOver) {
            return function() {
                this.style.transform = isOver ? 'scale(1.03)' : 'none';
            };
        };
 
        for (var j = 0; j < cards.length; j++) {
            cards[j].addEventListener('mouseover', handleHover(true));
            cards[j].addEventListener('mouseout', handleHover(false));
        }
    };
 
    var initClassifiedAnimation = function() {
        var classifiedElements = document.querySelectorAll('.classified');
        for (var k = 0; k < classifiedElements.length; k++) {
            classifiedElements[k].style.animation = 'pulse 2s infinite';
        }
    };


     document.addEventListener("DOMContentLoaded", function () {
     if (document.readyState === 'complete') {
         var cards = document.querySelectorAll('.race-card');
         initAccordions();
         cards.forEach(function (card) {
         addCardHover();
            card.addEventListener("click", function (event) {
        initClassifiedAnimation();
                event.preventDefault();
    } else {
                showRaceInfo(card.getAttribute("data-race"));
        window.addEventListener('load', function() {
             });
            initAccordions();
            addCardHover();
             initClassifiedAnimation();
         });
         });
     });
     }
})();
})();

Версия от 21:18, 23 февраля 2025

(function() {
    var initAccordions = function() {
        var accordions = document.querySelectorAll('.accordion-header');
        
        var toggleAccordion = function(e) {
            var content = this.parentNode.querySelector('.accordion-content');
            content.classList.toggle('active');
        };

        for (var i = 0; i < accordions.length; i++) {
            accordions[i].addEventListener('click', toggleAccordion);
        }
    };

    var addCardHover = function() {
        var cards = document.querySelectorAll('.species-card');
        
        var handleHover = function(isOver) {
            return function() {
                this.style.transform = isOver ? 'scale(1.03)' : 'none';
            };
        };

        for (var j = 0; j < cards.length; j++) {
            cards[j].addEventListener('mouseover', handleHover(true));
            cards[j].addEventListener('mouseout', handleHover(false));
        }
    };

    var initClassifiedAnimation = function() {
        var classifiedElements = document.querySelectorAll('.classified');
        for (var k = 0; k < classifiedElements.length; k++) {
            classifiedElements[k].style.animation = 'pulse 2s infinite';
        }
    };

    if (document.readyState === 'complete') {
        initAccordions();
        addCardHover();
        initClassifiedAnimation();
    } else {
        window.addEventListener('load', function() {
            initAccordions();
            addCardHover();
            initClassifiedAnimation();
        });
    }
})();