Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите исправить ошибки в консоли браузере в JS файле (https://javascript.ru/forum/misc/77572-pomogite-ispravit-oshibki-v-konsoli-brauzere-v-js-fajjle.html)

maxg5 21.05.2019 22:43

Помогите исправить ошибки в консоли браузере в JS файле
 
Всем доброго времени суток!
Есть сайт maxg5.ru
В консоли есть несколько ошибок в файле priority-menu.js.
Из за этих ошибок не корректно отображается список меню в мобильной версии. Точнее не в том порядке, который задан в админке.
В консоли пишется что ошибка в этом коде:
var visibleList  = container.parentNode.querySelector('.main-menu[id]');
var hiddenList   = visibleList.parentNode.nextElementSibling.querySelector('.hidden-links');
var toggleButton = visibleList.parentNode.nextElementSibling.querySelector('.main-menu-more-toggle');

Как я понимаю сейчас структура HTML кода меню не соответствует JS коду, в котором ошибка. Но как исправить не знаю.
Подскажите пожалуйста!

laimas 22.05.2019 04:22

main-menu[id] - что за странное имя класса? Но даже если и есть такой, то по такому селектору элемент не получить, нужно экранировать квадратные скобки вот так:

var visibleList  = container.parentNode.querySelector('.main-menu\\[id\\]');


А при вашем селекторе visibleList будет равен null со всеми вытекающими последствиями.

Malleys 22.05.2019 07:50

Цитата:

Сообщение от maxg5
Цитата:

Сообщение от laimas
что за странное имя класса?

.main-menu[id]

laimas, это не имя класса, это селектор, обозначающий элемент, у которого есть класс main-menu и атрибут id. Если вы не понимаете селекторы, то не нужно писать догадки! laimas, посмотрите!


maxg5, вам нужно проверять есть ли nextElementSibling, и только потом производить дальнейшие действия!

var visibleList  = container.parentNode.querySelector('.main-menu[id]');
var sibling = visibleList.parentNode.nextElementSibling;

if(!sibling) return; // или что сделать, если нет такого?

var hiddenList   = sibling.querySelector('.hidden-links');
var toggleButton = sibling.querySelector('.main-menu-more-toggle');

if(!hiddenList || !toggleButton)  return; // или что сделать, если нет такого?

laimas 22.05.2019 13:31

Цитата:

Сообщение от Malleys
это не имя класса, это селектор, обозначающий элемент

Да, у него и ID есть кроме класса, не все глянул, это селектор с имеем класса и имеющем ID. Зачем тогда так обращаться, и меню вроде бы одно у него, и есть ID.


Часовой пояс GMT +3, время: 23:30.