Как установить событие указателя для значка корзины, если оно находится в корзине или на странице оформления заказа

Я пытаюсь установить событие указателя на none, используя javascript и php, но мне не повезло.

По сути, если я нахожусь в корзине или на странице оформления заказа (woocommerce), я хочу, чтобы значок корзины (предоставленное имя класса) не имел события указателя, установленного над корзиной. В противном случае, если он находится на любой другой странице, установите на него указатель.

В настоящее время указатель по-прежнему отображается на значке корзины на странице оформления заказа. Что я делаю неправильно?

add_action('posts_selection', 'cart_icon_pointer');

function cart_icon_pointer(){
    if ( is_cart() || is_checkout() || is_page('cart') || is_page('checkout') ) {
        ?>
        <script>                
        function cartNoPointer() {
          document.getElementByClassName("ast-cart-menu-wrap").style.pointerEvents = "none";
        }
        </script>
        <?php
        } else {
        ?>
        <script>
        function cartPointer() {
            document.getElementByClassName("ast-cart-menu-wrap").style.pointerEvents = "pointer";
        }
        </script>
        <?php
    }
}

Я следил за этим в качестве руководства: https://docs.woocommerce.com/document/conditional-tags/


person BruceyBandit    schedule 17.04.2021    source источник
comment
ссылкой на сайт не поделитесь?   -  person Bhautik    schedule 18.04.2021
comment
@Bhautik Я исправил это сейчас. Я опубликую свой ответ ниже. Если хотите, у меня есть одна небольшая проблема (возможно, последний выпуск этого веб-сайта, и я закончу :)). Вот вопрос: stackoverflow.com/questions/67147276/   -  person BruceyBandit    schedule 18.04.2021
comment
@Bhautik На самом деле код в этом вопросе, который я разместил, связан с этой темой.   -  person BruceyBandit    schedule 18.04.2021


Ответы (1)


Правильный вызов должен быть...

document.getElementsByClassName()

во множественном числе!

И вам нужно указать номер элемента коллекции, вот так...

document.getElementsByClassName("ast-cart-menu-wrap")[0].style.pointerEvents = "none";

Передайте переменную номера элемента, с которой вы хотите работать, в качестве параметра для ваших функций...

function cartNoPointer(Num) {document.getElementsByClassName("ast-cart-menu-wrap")[Num].style.pointerEvents = "none";}


function cartPointer(Num) {document.getElementsByClassName("ast-cart-menu-wrap")[Num].style.pointerEvents = "auto";}

Кстати, здесь нет значения указателя, кроме auto.

person TodayCoder    schedule 17.04.2021
comment
Спасибо за это, это все еще не работает. Можете ли вы предоставить полный код, чтобы я мог видеть? Не уверен, что мне нужен набор функций - person BruceyBandit; 18.04.2021
comment
Обновить с дополнительной информацией... - person TodayCoder; 18.04.2021
comment
Кстати, если вы работаете с какой-то ублюдочной библиотекой javascript, забудьте мой ответ… вам придется обсудить это с ними. - person TodayCoder; 18.04.2021
comment
Нет бастадизировать библиотеку. Прошли годы с тех пор, как я сделал javascript, я забыл, как он устанавливается. Я даже не мог вспомнить, нужна ли мне функция, лол. - person BruceyBandit; 18.04.2021
comment
Хорошо, теперь вы должны вызывать эти функции с номером элемента, чтобы работать с ним следующим образом... cartNoPointer(24); - person TodayCoder; 18.04.2021
comment
Возможно, вы слишком заржавели, чтобы осуществить это… :) - person TodayCoder; 18.04.2021
comment
Ах, все еще не повезло. Я думаю, что код нуждается в обновлении. Я думаю, было бы лучше, если бы у вас было время увидеть свой полный фрагмент кода, потому что этого не происходит, а я смотрю на другую проблему... в час ночи!!! :) - person BruceyBandit; 18.04.2021