Я работаю над шаблоном, используя Bootstrap 4 для Joomla 4. Структура главного меню на разных уровнях (родительский, дочерний, более глубокий и т. Д.) Определяется в php-файлах mod_menu. Я поместил одно и то же меню (основного сайта) в две позиции: одну для мобильных устройств (#sidenav) и одну для рабочего стола (#mainmenu).
Элементы li на дочернем уровне, которые действуют как разделитель /заголовок для следующего уровня в меню (например, пункт «Дополнительная информация», но не «элемент верхнего уровня») имеет класс .dropdown-submenu, примененный из файла mod_menu / default_separator.php.
sidenav отображается так, как мне хотелось бы (см. Рис: ), но в главном меню (т. Е. На рабочем столе / на большом планшете) я бы хотел, чтобы второй и все последующие выпадающие уровни были «прямолинейными»,
Когда я добавляю класс с помощью инспектора Firefox, он работает отлично, поэтому, чтобы это произошло автоматически, мне нужно добавить класс, используя Javascript, чтобы изменить его следующим образом:
<li class="dropdown-submenu">
к этому, добавив класс Bootstrap «dropright», чтобы маленькая каретка указывала вправо, а не вниз:
<li class="dropdown-submenu dropright">
Как вы можете видеть выше, когда я добавляю класс с помощью инспектора Firefox, он работает отлично, поэтому я пытаюсь добавить некоторый javascript к пользователю user.js, чтобы он работал автоматически.
Я пробовал добавлять различныебиты кода, но ни один из них не имеет никакого эффекта:
function dropRight() {
var element = document.getElementById('mainmenu');
var elements = document.getElementsByClassName('.dropdown-submenu');
elements.classList.add("dropright");
}
и
function dropRight() {
var element = document.getElementById('mainmenu');
var ul = document.getElementsByClassName("dropdown-menu");
var li = ul[0].getElementsByClassName("dropdown-submenu");
for ( var i = 0; i < li.length; i++ ){
var class = li[i].className += " dropright";
}
Следующие фрагменты кода также не работают, но даже если бы они это сделали, они добавили быКласс Sidenav также, что я не хочу, поэтому мне нужно выбрать id 'mainmenu':
function dropRight() {
var elements = document.getElementsByClassName('dropdown-submenu');
elements[0].className += " dropright";
}
или
function dropRight() {
var elements = document.getElementsByClassName('.dropdown-submenu');
elements.classList.add("dropright");
}
Я искал в Интернете всевчерашний день для ответов и перепробовал множество других комбинаций безрезультатно. Javascript определенно не моя удача, поэтому любая помощь будет с благодарностью получена.