Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2019, 22:43
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 58

Помогите исправить ошибки в консоли браузере в 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 коду, в котором ошибка. Но как исправить не знаю.
Подскажите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2019, 04:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,716

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

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


А при вашем селекторе visibleList будет равен null со всеми вытекающими последствиями.
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2019, 07:50
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,152

Сообщение от 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; // или что сделать, если нет такого?

Последний раз редактировалось Malleys, 22.05.2019 в 07:55.
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2019, 13:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,716

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите новичку встроить JS во фреймворк Яна_24 Общие вопросы Javascript 1 03.04.2016 17:33
Помогите исправить ошибку. node js (tradebot) xOxXakerxOx Node.JS 0 22.12.2015 09:18
Помогите с JS Dotoni Элементы интерфейса 2 08.11.2009 14:41
помогите js скрипты не окрываются:( новичок Общие вопросы Javascript 2 19.09.2009 15:21
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 01:48