Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2020, 10:10
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

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

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

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

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

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2020, 10:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

и потом его обрабатывать при клике кнопки.
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2020, 10:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

savsoft,
class="add2cart" data-id = "id_товара"
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2020, 10:50
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от рони Посмотреть сообщение
savsoft,
class="add2cart" data-id = "id_товара"
А чем onclick="add2cart(id_товара)" хуже?

Последний раз редактировалось savsoft, 19.01.2020 в 10:57.
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2020, 11:01
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от savsoft
А если просто атрибут id = "id_товара"?
Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.

Сообщение от savsoft
И чем onclick="add2cart(id_товара)" хуже?
Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2020, 11:08
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от Malleys Посмотреть сообщение
Тогда вам нужно убедиться, что id_товара всегда будет неповторяющимся, и не противоречит другим неповторимым именам id.
Да, как-то не подумал, что товары/категории/пользователи могут иметь одинаковый id.

Цитата:
Элемент должен быть самодостаточно описанным (что позволяет сделать при помощи data-id), а onclick="add2cart(id_товара)" уже сразу говорит, что должно быть сделано. Также создаётся по обработчику события на каждый товар. А вы можете захотеть это сделать через «делегирование».
Понятно, спасибо
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2020, 11:12
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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


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


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

Либо вам тогда нужно разделить клиент и сервер, чтобы сервер занимался данными, а клиент интерфейсом. А не так, что логика вывода товаров на сервере, в корзинку добавляются через логику на клиенте... Я такое называю «размазываем логику по двум местам (не волнуйтесь, потом будет по трём местам!)»
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2020, 11:39
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от Malleys Посмотреть сообщение
savsoft, кстати...


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

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

Корзину не могу сделать на чистом php, так как начальник хочет, чтобы количество товара в корзине менялось нажатием на +/-, менялась надпись "Купить" на "Уже в корзине" и т.д. Соответственно обновлять страницу при каждом действии это никак не подходит, значит приходится подключать javascript/jquery/ajax. А сама обработка корзины делается на php.
Ответить с цитированием
  #9 (permalink)  
Старый 19.01.2020, 12:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше реализовать в слайдре Начинающий-Js-кодер Элементы интерфейса 11 19.07.2018 13:01
Как сделать клик по элементу только один раз в день Alexodiy Events/DOM/Window 7 19.01.2018 15:23
Как лучше решить задачу с утечкой памяти? JSInteres Общие вопросы Javascript 6 27.02.2015 18:19
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как сделать клик по ссылке с другой ссылки или div ? ilyas-> Элементы интерфейса 15 01.08.2013 12:49