Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как лучше обрабатывать клик по кнопке. (https://javascript.ru/forum/misc/79281-kak-luchshe-obrabatyvat-klik-po-knopke.html)

savsoft 19.01.2020 10:10

Как лучше обрабатывать клик по кнопке.
 
Всем привет,

Есть HTML страница товаров. Мне нужно добавить наполнение товарами из базы данных. С php проблем нет, но javascript я только начинаю осваивать. В интернете только смог найти много примеров, как сделать, но нигде не понял почему так нужно делать. Собственно вопрос, как лучше, производительнее, надежнее, более совместимо делать обработку кнопки "Купить", да и любой другой. Делать на каждой кнопке
onclick="add2cart(id_товара)"

или добавлять в каждую кнопку класс
class="add2cart"

и потом его обрабатывать при клике кнопки. Или лучше сделать еще как-то.

Спасибо

рони 19.01.2020 10:14

Цитата:

Сообщение от savsoft
или добавлять в каждую кнопку класс
class="add2cart"

и потом его обрабатывать при клике кнопки.

:yes:

рони 19.01.2020 10:16

savsoft,
class="add2cart" data-id = "id_товара"

savsoft 19.01.2020 10:50

Цитата:

Сообщение от рони (Сообщение 518889)
savsoft,
class="add2cart" data-id = "id_товара"

А чем onclick="add2cart(id_товара)" хуже?

Malleys 19.01.2020 11:01

Цитата:

Сообщение от savsoft
А если просто атрибут id = "id_товара"?

Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.

Цитата:

Сообщение от savsoft
И чем onclick="add2cart(id_товара)" хуже?

Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».

savsoft 19.01.2020 11:08

Цитата:

Сообщение от Malleys (Сообщение 518895)
Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.

Да, как-то не подумал, что товары/категории/пользователи могут иметь одинаковый id.

Цитата:

Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».
Понятно, спасибо

Malleys 19.01.2020 11:12

savsoft, кстати...
Цитата:

Сообщение от savsoft
С php проблем нет

Цитата:

Сообщение от savsoft
Собственно вопрос, как лучше, производительнее, надежнее, более совместимо делать обработку кнопки "Купить", да и любой другой. Делать на каждой кнопке
onclick="add2cart(id_товара)"


или добавлять в каждую кнопку класс
class="add2cart"


и потом его обрабатывать при клике кнопки. Или лучше сделать еще как-то.

Почему тогда вы не хотите сделать, чтобы логика приложения была в одном месте? Если вы начали делать на PHP и вывод товаров уже сделан, как я понимаю, то почему вы неожиданно меняете технологию на другую при добавлении товара в корзину? Разве тогда обработка корзины не должна производиться тоже на PHP?

Либо вам тогда нужно разделить клиент и сервер, чтобы сервер занимался данными, а клиент интерфейсом. А не так, что логика вывода товаров на сервере, в корзинку добавляются через логику на клиенте... Я такое называю «размазываем логику по двум местам (не волнуйтесь, потом будет по трём местам!)»

savsoft 19.01.2020 11:39

Цитата:

Сообщение от Malleys (Сообщение 518898)
savsoft, кстати...


Почему тогда вы не хотите сделать, чтобы логика приложения была в одном месте? Если вы начали делать на PHP и вывод товаров уже сделан, как я понимаю, то почему вы неожиданно меняете технологию на другую при добавлении товара в корзину? Разве тогда обработка корзины не должна производиться тоже на PHP?

Либо вам тогда нужно разделить клиент и сервер, чтобы сервер занимался данными, а клиент интерфейсом. А не так, что логика вывода товаров на сервере, в корзинку добавляются через логику на клиенте... Я такое называю «размазываем логику по двум местам (не волнуйтесь, потом будет по трём местам!)»

Я сейчас только осваиваю веб-программирование, но годы назад программировал, поэтому логика уже в трех местах. Еще Mysql. В моем случае, на php я пишу бизнес логику, обработка данных по максимум на Mysql (хранимки, тригеры).

Корзину не могу сделать на чистом php, так как начальник хочет, чтобы количество товара в корзине менялось нажатием на +/-, менялась надпись "Купить" на "Уже в корзине" и т.д. Соответственно обновлять страницу при каждом действии это никак не подходит, значит приходится подключать javascript/jquery/ajax. А сама обработка корзины делается на php.

laimas 19.01.2020 12:22

Цитата:

Сообщение от savsoft
Корзину не могу сделать на чистом php, так как начальник хочет, чтобы количество товара в корзине менялось нажатием на +/-, менялась надпись "Купить" на "Уже в корзине" и т.д

Это не зависит от того где корзина - все верно, ajax и не обязательно JQ.


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