Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрытие элемента (https://javascript.ru/forum/misc/79239-skrytie-ehlementa.html)

_marisha 13.01.2020 07:23

Скрытие элемента
 
Доброго времени суток!
В товаре есть кнопка "В корзину". При клике на данную кнопку кнопка переименовывается на "В корзине".
Необходимо ниже данной кнопки добавить кнопку "Покупка в кредит" и чтобы при клике на данную кнопку не появлялась вторая кнопка "В корзине".
На данный момент при клике на кнопку "Покупка в кредит" добавляется товар в корзину и данная кнопка меняется на надпись "В корзине", те. кнопка "В корзине" дублируется https://prnt.sc/qmu7n4
Код кнопки:
<div class="row columnRow">
                <a href="#" class="addCart addCartCredit changeID changeQty changeCart" data-id="<?=$arResult["ID"]?>" data-quantity="<?=$arResult["EXTRA_SETTINGS"]["BASKET_STEP"]?>">
                    <img src="<?=SITE_TEMPLATE_PATH?>/images/Осн_new.png" alt="<?=GetMessage("CREDIT_BEZ_PEREPLAT")?>" class="icon"><?//=GetMessage("CREDIT_BEZ_PEREPLAT")?>
                    <?if (isset($arResult["PRICE"]["DISCOUNT_PRICE"])):?>
                        от <?=CCurrencyLang::CurrencyFormat($arResult["PRICE"]["DISCOUNT_PRICE"], $arResult["EXTRA_SETTINGS"]["CURRENCY"], true)?> в месяц
                    <?else:?>
                        <?=CCurrencyLang::CurrencyFormat($arResult["PRICE"]["RESULT_PRICE"]["BASE_PRICE"], $arResult["EXTRA_SETTINGS"]["CURRENCY"], true)?>
                    <?endif?>
                </a>
            </div>

Если кнопке добавить
onclick="style.display='none'"
, тогда после нажатия кнопка исчезает - так и нужно. Но если обновить страницу, тогда отображается две кнопки "В корзине" https://prnt.sc/qmu7n4

Подскажите, пожалуйста, каким образом скрыть кнопку после клика на неё и чтобы кнопка "В корзине" второй раз не отображалась? Спасибо.

_marisha 13.01.2020 07:34

Может возможно опираясь на класс addCartCredit по наличию данного класса у элемента при клике на него скрыть?

laimas 13.01.2020 07:48

Цитата:

Сообщение от _marisha
Может возможно опираясь на класс addCartCredit по наличию данного класса у элемента при клике на него скрыть?

То есть <a href="#" class="addCart... добавляет и просто, и по кредиту?

_marisha 13.01.2020 07:59

laimas, спасибо что откликнулись )
В простой кнопке(т.е. "В корзину") нет класса addCartCredit
<a href="#" class="addCart changeID changeQty changeCart disabled" data-id="<?=$arResult["ID"]?>" data-quantity="<?=$arResult["EXTRA_SETTINGS"]["BASKET_STEP"]?>"><img src="<?=SITE_TEMPLATE_PATH?>/images/incart.png" alt="<?=GetMessage("ADDCART_LABEL")?>" class="icon"><?=GetMessage("ADDCART_LABEL")?></a>

На данный момент у кнопки "Покупка в кредит" есть класс addCartCredit, которого нет в кнопке "В корзину".
Вот и думаю, может по наличию данного класса скрывать элемент.
Потому что данный класс есть как в кнопке "Покупка в кредит", так и в кнопке "В корзине", которая появляется (дублируется) после клика на "Покупка в кредит".
Можно сделать так onclick="this.remove();", тогда при клике на "Покупка в кредит" кнопка "В кредит" не отображается, но при обновлении страницы кнопка "В корзине" всё равно дублируется.

laimas 13.01.2020 08:09

Цитата:

Сообщение от _marisha
данный класс есть как в кнопке "Покупка в кредит", так и в кнопке "В корзине", которая появляется (дублируется) после клика на "Покупка в кредит".

Интересен иной вопрос - если товар уже в корзине, почему сервер упорно добавляет добавляет две кнопки? Вы же боретесь с мельницей - меняете, а после обновления страницы кнопка опять есть. А ведь по идее, пусть если и остается "В кредит" после добавления товара, то это уже не добавление должно быть, а опция, которую можно выбрать. Либо нет, добавление только в кредит или без него, тогда сервер должен определять, что товар в корзине и не выводить никаких лишних кнопок. Тут косяк на сервере, а вы ищите проблемы на клиенте.

_marisha 13.01.2020 08:57

laimas, изначально была одна кнопка "В корзинУ", после нажатия на которую товар добавляется в корзину и кнопка становится "В корзинЕ".
В связи с интеграцией покупки в кредит в товаре необходимо добавить кнопку "Покупка в кредит", которая также должна добавлять товар в корзину https://prnt.sc/qmup7e
Для этого просто была скопирована кнопка "В корзинУ" и добавлен класс addCartCredit для изменения стиля кнопки. Но при этом кнопка "В корзинЕ" дублируется.

Найден код:
var updateAddCartButton = function($currentElement){
	var $imageAfterLoad = $currentElement.find("img");
	$currentElement.text(LANG["ADDED_CART_SMALL"])
		.attr("href", SITE_DIR + "personal/cart/")
		.prepend($imageAfterLoad.attr("src", TEMPLATE_PATH + "/images/added.png"))
		.addClass("added");
};

Если его закомментировать, тогда после добавления товара в корзину кнопки "В корзинЕ" не появляются, вместо них отображаются кнопки "В корзинУ" и "Покупка в кредит".

laimas 13.01.2020 09:00

Цитата:

Сообщение от _marisha
Для этого просто была скопирована кнопка "В корзинУ" и добавлен класс addCartCredit для изменения стиля кнопки.

И это называется интеграцией? :D

_marisha 13.01.2020 09:01

Если сделать console.log($currentElement);, тогда в консоли выводится:
n.fn.init [a.addCart.changeID.changeQty.changeCart, context: a.addCart.changeID.changeQty.changeCart]

n.fn.init [a.addCart.addCartCredit.changeID.changeQty.changeCart, context: a.addCart.addCartCredit.changeID.changeQty.changeCart]

n.fn.init [a.addCart.changeID.changeQty.changeCart, context: a.addCart.changeID.changeQty.changeCart]

n.fn.init [a.addCart.addCartCredit.changeID.changeQty.changeCart, context: a.addCart.addCartCredit.changeID.changeQty.changeCart]

_marisha 13.01.2020 09:02

Цитата:

Сообщение от laimas (Сообщение 518669)
И это называется интеграцией? :D

- :) ну это один из этапов ;)

laimas 13.01.2020 09:03

_marisha, то есть вы вставили на страницу js код (показанный выше), который добавляет кнопку и запрос на добавление товара, а при этом анализа корзины не производится?


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