Javascript в Magento 1.9.3.8. Добавьте id к элементу, если body содержит определенный класс, а id элемента содержит класс - PullRequest
0 голосов
/ 30 апреля 2018

Следующий код назначит класс «активный» элементу с id = «39». Это произойдет, если будут выполнены два условия: 1) что тело содержит «гостиничные магазины» в своем классе, так что классом тела могут быть гостиничные магазины, гостиничные магазины-1, гостиничные магазины-2, гостиничные магазины- 3 и т. Д. И 2) что элемент с id = "dropdown-menu" будет содержать класс "active".

Тем не менее, код не работает. У вас есть идеи, где ошибки, или почему этот код не работает? Любая помощь будет оценена.

if ( ($('body[class*="hotel-stores"]').length > 0)  && ( $( "#dropdown-menu" ).is( ".active" ) ))  {
   var el = document.getElementById("39");
   el.classList.add("active");
}

Этот второй способ, кажется, работает довольно хорошо, но только в том случае, если класс кузова «hotel-store»:

if (document.body.classList.contains('hotel-stores')) {
    var el = $(document.getElementById("39"));
    el.addClassName("active");
}

1 Ответ

0 голосов
/ 30 апреля 2018

В комментарии вы сказали

Uncaught TypeError: Невозможно прочитать свойство 'length' из null в гостиничных магазинах

Это говорит мне о том, что $ в этом коде не jQuery, как Я предположил , но некоторая другая библиотека, вероятно, PrototypeJS , учитывая, что это сайт Magento.

Если у вас также загружен jQuery, просто измените все $ на jQuery, и оно должно работать.

Если вы также не загружаете jQuery, вы можете сделать то же самое с PrototypeJS, только немного по-другому, потому что PrototypeJS не основан на множестве, как jQuery:

if (document.body.className.indexOf('hotel-stores') !== -1 && $$("#dropdown-menu.active").length) {
   var el = $(document.getElementById("39"));
   el.addClassName("active");
}
...