Aleksmorshen commited on
Commit
cf89e57
·
verified ·
1 Parent(s): f545cff

Update script.js

Browse files
Files changed (1) hide show
  1. script.js +40 -16
script.js CHANGED
@@ -48,6 +48,33 @@ document.addEventListener('DOMContentLoaded', function () {
48
  }
49
  });
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  // Функция добавления товара
52
  function addProduct(name, purchasePrice, salePrice, quantity, itemsPerPack) {
53
  const product = {
@@ -81,9 +108,9 @@ document.addEventListener('DOMContentLoaded', function () {
81
  <td>${product.itemsPerPack}</td>
82
  <td class="actions">
83
  <input type="number" min="1" max="${product.quantity}" class="quantity-input" placeholder="Количество">
84
- <button class="add-to-cart-btn" onclick="addToCart(${product.id})">Добавить в корзину</button>
85
- <button class="add-stock-btn" onclick="addStock(${product.id})">Приход</button>
86
- <button class="delete-btn" onclick="deleteProduct(${product.id})">Удалить</button>
87
  </td>
88
  `;
89
  }
@@ -122,22 +149,19 @@ document.addEventListener('DOMContentLoaded', function () {
122
  cartTable.innerHTML = ''; // Очищаем корзину перед обновлением
123
  cart.forEach(item => {
124
  const row = cartTable.insertRow();
 
125
  row.innerHTML = `
126
  <td>${item.name}</td>
127
  <td>${item.quantity}</td>
128
  <td>${item.salePrice}</td>
129
  <td>${item.quantity * item.salePrice}</td>
130
- <td><button class="delete-btn" onclick="removeFromCart(${item.id})">Удалить</button></td>
131
  `;
132
  });
133
  }
134
 
135
  // Функция добавления товара в корзину
136
- window.addToCart = function (productId) {
137
- const row = document.querySelector(`tr[data-id="${productId}"]`);
138
- const quantityInput = row.querySelector('.quantity-input');
139
- const quantity = parseInt(quantityInput.value);
140
-
141
  if (quantity && quantity > 0) {
142
  const products = JSON.parse(localStorage.getItem('products')) || [];
143
  const product = products.find(p => p.id === productId);
@@ -165,14 +189,14 @@ document.addEventListener('DOMContentLoaded', function () {
165
  } else {
166
  alert('Пожалуйста, введите корректное количество.');
167
  }
168
- };
169
 
170
  // Функция удаления товара из корзины
171
- window.removeFromCart = function (productId) {
172
  cart = cart.filter(item => item.id !== productId);
173
  localStorage.setItem('cart', JSON.stringify(cart));
174
  updateCartDisplay();
175
- };
176
 
177
  // Функция продажи товаров из корзины
178
  window.sellCart = function () {
@@ -208,7 +232,7 @@ document.addEventListener('DOMContentLoaded', function () {
208
  };
209
 
210
  // Функция добавления остатков
211
- window.addStock = function (productId) {
212
  const quantityToAdd = prompt('Введите количество для прихода:');
213
  if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) {
214
  let products = JSON.parse(localStorage.getItem('products')) || [];
@@ -225,10 +249,10 @@ document.addEventListener('DOMContentLoaded', function () {
225
  } else {
226
  alert('Пожалуйста, введите корректное количество.');
227
  }
228
- };
229
 
230
  // Функция удаления товара
231
- window.deleteProduct = function (productId) {
232
  if (confirm('Вы уверены, что хотите удалить этот товар?')) {
233
  let products = JSON.parse(localStorage.getItem('products')) || [];
234
  products = products.filter(p => p.id !== productId);
@@ -238,5 +262,5 @@ document.addEventListener('DOMContentLoaded', function () {
238
  productTable.innerHTML = '';
239
  loadProducts();
240
  }
241
- };
242
  });
 
48
  }
49
  });
50
 
51
+ // Делегирование событий для кнопок в таблице товаров
52
+ productTable.addEventListener('click', function (e) {
53
+ const target = e.target;
54
+ const row = target.closest('tr');
55
+ const productId = parseInt(row.getAttribute('data-id'));
56
+
57
+ if (target.classList.contains('add-to-cart-btn')) {
58
+ const quantityInput = row.querySelector('.quantity-input');
59
+ const quantity = parseInt(quantityInput.value);
60
+ addToCart(productId, quantity);
61
+ } else if (target.classList.contains('add-stock-btn')) {
62
+ addStock(productId);
63
+ } else if (target.classList.contains('delete-btn')) {
64
+ deleteProduct(productId);
65
+ }
66
+ });
67
+
68
+ // Делегирование событий для кнопок в корзине
69
+ cartTable.addEventListener('click', function (e) {
70
+ const target = e.target;
71
+ if (target.classList.contains('delete-btn')) {
72
+ const row = target.closest('tr');
73
+ const productId = parseInt(row.getAttribute('data-id'));
74
+ removeFromCart(productId);
75
+ }
76
+ });
77
+
78
  // Функция добавления товара
79
  function addProduct(name, purchasePrice, salePrice, quantity, itemsPerPack) {
80
  const product = {
 
108
  <td>${product.itemsPerPack}</td>
109
  <td class="actions">
110
  <input type="number" min="1" max="${product.quantity}" class="quantity-input" placeholder="Количество">
111
+ <button class="add-to-cart-btn">Добавить в корзину</button>
112
+ <button class="add-stock-btn">Приход</button>
113
+ <button class="delete-btn">Удалить</button>
114
  </td>
115
  `;
116
  }
 
149
  cartTable.innerHTML = ''; // Очищаем корзину перед обновлением
150
  cart.forEach(item => {
151
  const row = cartTable.insertRow();
152
+ row.setAttribute('data-id', item.id);
153
  row.innerHTML = `
154
  <td>${item.name}</td>
155
  <td>${item.quantity}</td>
156
  <td>${item.salePrice}</td>
157
  <td>${item.quantity * item.salePrice}</td>
158
+ <td><button class="delete-btn">Удалить</button></td>
159
  `;
160
  });
161
  }
162
 
163
  // Функция добавления товара в корзину
164
+ function addToCart(productId, quantity) {
 
 
 
 
165
  if (quantity && quantity > 0) {
166
  const products = JSON.parse(localStorage.getItem('products')) || [];
167
  const product = products.find(p => p.id === productId);
 
189
  } else {
190
  alert('Пожалуйста, введите корректное количество.');
191
  }
192
+ }
193
 
194
  // Функция удаления товара из корзины
195
+ function removeFromCart(productId) {
196
  cart = cart.filter(item => item.id !== productId);
197
  localStorage.setItem('cart', JSON.stringify(cart));
198
  updateCartDisplay();
199
+ }
200
 
201
  // Функция продажи товаров из корзины
202
  window.sellCart = function () {
 
232
  };
233
 
234
  // Функция добавления остатков
235
+ function addStock(productId) {
236
  const quantityToAdd = prompt('Введите количество для прихода:');
237
  if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) {
238
  let products = JSON.parse(localStorage.getItem('products')) || [];
 
249
  } else {
250
  alert('Пожалуйста, введите корректное количество.');
251
  }
252
+ }
253
 
254
  // Функция удаления товара
255
+ function deleteProduct(productId) {
256
  if (confirm('Вы уверены, что хотите удалить этот товар?')) {
257
  let products = JSON.parse(localStorage.getItem('products')) || [];
258
  products = products.filter(p => p.id !== productId);
 
262
  productTable.innerHTML = '';
263
  loadProducts();
264
  }
265
+ }
266
  });