19.01.2020, 10:10
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Как лучше обрабатывать клик по кнопке.
Всем привет,
Есть HTML страница товаров. Мне нужно добавить наполнение товарами из базы данных. С php проблем нет, но javascript я только начинаю осваивать. В интернете только смог найти много примеров, как сделать, но нигде не понял почему так нужно делать. Собственно вопрос, как лучше, производительнее, надежнее, более совместимо делать обработку кнопки "Купить", да и любой другой. Делать на каждой кнопке
onclick="add2cart(id_товара)"
или добавлять в каждую кнопку класс
class="add2cart"
и потом его обрабатывать при клике кнопки. Или лучше сделать еще как-то.
Спасибо
|
|
19.01.2020, 10:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от savsoft
|
или добавлять в каждую кнопку класс
class="add2cart"
и потом его обрабатывать при клике кнопки.
|
|
|
19.01.2020, 10:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
savsoft,
class="add2cart" data-id = "id_товара"
|
|
19.01.2020, 10:50
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от рони
|
savsoft,
class="add2cart" data-id = "id_товара"
|
А чем onclick="add2cart(id_товара)" хуже?
Последний раз редактировалось savsoft, 19.01.2020 в 10:57.
|
|
19.01.2020, 11:01
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от savsoft
|
А если просто атрибут id = "id_товара"?
|
Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.
Сообщение от savsoft
|
И чем onclick="add2cart(id_товара)" хуже?
|
Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».
|
|
19.01.2020, 11:08
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от Malleys
|
Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.
|
Да, как-то не подумал, что товары/категории/пользователи могут иметь одинаковый id.
Цитата:
|
Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».
|
Понятно, спасибо
|
|
19.01.2020, 11:12
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
savsoft, кстати...
Сообщение от savsoft
|
С php проблем нет
|
Сообщение от savsoft
|
Собственно вопрос, как лучше, производительнее, надежнее, более совместимо делать обработку кнопки "Купить", да и любой другой. Делать на каждой кнопке
onclick="add2cart(id_товара)"
или добавлять в каждую кнопку класс
class="add2cart"
и потом его обрабатывать при клике кнопки. Или лучше сделать еще как-то.
|
Почему тогда вы не хотите сделать, чтобы логика приложения была в одном месте? Если вы начали делать на PHP и вывод товаров уже сделан, как я понимаю, то почему вы неожиданно меняете технологию на другую при добавлении товара в корзину? Разве тогда обработка корзины не должна производиться тоже на PHP?
Либо вам тогда нужно разделить клиент и сервер, чтобы сервер занимался данными, а клиент интерфейсом. А не так, что логика вывода товаров на сервере, в корзинку добавляются через логику на клиенте... Я такое называю «размазываем логику по двум местам (не волнуйтесь, потом будет по трём местам!)»
|
|
19.01.2020, 11:39
|
Профессор
|
|
Регистрация: 03.01.2019
Сообщений: 162
|
|
Сообщение от Malleys
|
savsoft, кстати...
Почему тогда вы не хотите сделать, чтобы логика приложения была в одном месте? Если вы начали делать на PHP и вывод товаров уже сделан, как я понимаю, то почему вы неожиданно меняете технологию на другую при добавлении товара в корзину? Разве тогда обработка корзины не должна производиться тоже на PHP?
Либо вам тогда нужно разделить клиент и сервер, чтобы сервер занимался данными, а клиент интерфейсом. А не так, что логика вывода товаров на сервере, в корзинку добавляются через логику на клиенте... Я такое называю «размазываем логику по двум местам (не волнуйтесь, потом будет по трём местам!)»
|
Я сейчас только осваиваю веб-программирование, но годы назад программировал, поэтому логика уже в трех местах. Еще Mysql. В моем случае, на php я пишу бизнес логику, обработка данных по максимум на Mysql (хранимки, тригеры).
Корзину не могу сделать на чистом php, так как начальник хочет, чтобы количество товара в корзине менялось нажатием на +/-, менялась надпись "Купить" на "Уже в корзине" и т.д. Соответственно обновлять страницу при каждом действии это никак не подходит, значит приходится подключать javascript/jquery/ajax. А сама обработка корзины делается на php.
|
|
19.01.2020, 12:22
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от savsoft
|
Корзину не могу сделать на чистом php, так как начальник хочет, чтобы количество товара в корзине менялось нажатием на +/-, менялась надпись "Купить" на "Уже в корзине" и т.д
|
Это не зависит от того где корзина - все верно, ajax и не обязательно JQ.
|
|
|
|