Автор Тема: Подключенный код влияет на работу подключенных скриптов по-дефолту.  (Прочитано 443 раз)

22 Март 2017, 09:19:22
  • Ветеран
  • *****
  • Сообщений: 520
  • Репутация: +4/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день.Сделала такой код на javaScript для смены параметров меню.Подключила на прямую в blocktopmenu {if $MENU != ''}
    <!-- Menu -->
    <div id="block_top_menu" class="sf-contener clearfix col-lg-12">

        <div class="cat-title">{l s="" mod="blocktopmenu"}<i class="pe-7s-menu pe-3x"></i></div>
        <ul class="sf-menu clearfix menu-content">
            {$MENU} 
        </ul>
    </div>
    {literal}<script>
        var lis = document.getElementsByTagName('ul');
        for (i = 0; i < lis.length; i++) {           
// получить количество детей
            var parent = lis[0];
            var countImg = lis[i].getElementsByTagName('img').length;
            var childCount = lis[i].getElementsByTagName('ul').length;
            var childCountLi = lis[i].children.length;
            if (childCount >= 1 && countImg >= 1 && childCountLi <= 4) {
                lis[i].className = 'bigTab';
                parent.classList.remove("bigTab");
                parent.classList.add("sf-menu");
            }
            if (countImg <= 3 && childCountLi == 5) {
                lis[i].className = 'bigLageTab';
                parent.classList.remove("bigLageTab");
                parent.classList.add("sf-menu");
            }
            if (countImg == 4 && childCountLi <= 6) {
                lis[i].className = 'bigXLageTab';
                parent.classList.remove("bigXLageTab");
                parent.classList.add("sf-menu");
            }
            if (childCountLi >= 7) {
                lis[i].classList.add("noImg");
                lis[i].style.backgroundColor = 'red';
                parent.classList.remove("noImg");
                parent.classList.add("sf-menu");
            }
            if (countImg === 0) {
                lis[i].className = 'noImg';
                parent.classList.remove("noImg");
                parent.classList.add("sf-menu");
            }           
        }
        </script>{/literal}

        <!--/ Menu -->
        {/if}
Код работает, но перестали работать скрипты подключенные в global.js, все не проверяла, но вот переключение с грид сетки на лист(только в Firfox) и function dropDown()-везде.Как сделать , чтобы всё работало.
22 Март 2017, 10:03:29
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 520
  • Репутация: +4/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Так, посмотрела про переключение с грид на лист, проблема не в подключенном скрипте. Перестаёт подключаться во всех случаях с подключенным и без после очистки кэша и перезагрузки страницы. Если заходишь снова на firefox всё работает, тоже интересно почему, но это не так критично, как почему не работает функция dropdown.Конкретно не выпадает список у смены языка и валюты в шапке.
22 Март 2017, 10:07:36
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 520
  • Репутация: +4/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При этом рядом корзина открывается дропдауном из бутстрапа.
22 Март 2017, 10:35:34
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 520
  • Репутация: +4/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нашла ошибку, мой код всем ul переписывает класс, пошла переписывать код :-\
22 Март 2017, 16:25:54
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 520
  • Репутация: +4/-0
  • Сообщество PrestaShop
    • Просмотр профиля
var lis = document.querySelector('.sf-menu').children;
        for (i = 0; i < lis.length; i++) {
// получить количество детей
            var childUl = lis[i].querySelectorAll('ul');
            var childCountUl = childUl.length;
            for (j = 0; j < childCountUl; j++) {
                var countImg = childUl[0].getElementsByTagName('img').length;
                var childCountLi = childUl[0].children.length;
                childUl[0].style.background = 'red';

                if (countImg >= 1 && childCountLi <= 4) {
                    childUl[0].className = 'bigTab';
                }
                if (countImg <= 3 && childCountLi == 5) {
                    childUl[0].className = 'bigLageTab';

                }
                if (countImg == 4 && childCountLi <= 6) {
                    childUl[i].className = 'bigXLageTab';

                }
                if (childCountLi >= 7) {
                    childUl[0].classList.add("noImg");
                    childUl[0].style.backgroundColor = 'red';

                }
                if (countImg === 0) {
                    childUl[0].className = 'noImg';
                }
             
            }
        }
Вроде всё работает.