Добавить корзину не работает в ES6 (java script)
Привет, ребята, у меня проблема. Функция добавить в корзину работает неправильно. После того как я нажал кнопку Добавить в корзину, если это тот же идентификатор продукта, он выводит новый продукт в другую строку. Еще одна проблема - это общая сумма в таблице корзины.
Что я уже пробовал:
Я попытался использовать функцию поиска, но она по-прежнему не работает. Он все еще выводит новый продукт на другой ряд. Пожалуйста, помогите мне исправить это. Спасибо. Кстати, вот мой код ниже.
<!DOCTYPE html> <html> <head> <title>Shopping Cart ES6</title> </head> <body> <form name="order" id="order"> <table> <tr> <td> <label for="productID">Product ID:</label> </td> <td> <input id="productID" name="product" type="text" size="28" required/> </td> </tr> <tr> <td> <label for="product">Product Desc:</label> </td> <td> <input id="product_desc" name="product" type="text" size="28" required/> </td> </tr> <tr> <td> <label for="quantity">Quantity:</label> </td> <td> <input id="quantity" name="quantity" width="196px" required/> </td> </tr> <tr> <td> <label for="price">Price:</label> </td> <td> <input id="price" name="price" size="28" required/> </td> </tr> </table> <input type="reset" class="resetbtn" value="Reset" /> <input type="button" id="btnAddProduct" onclick="addProduct();" value="Add New Product" > </form> <table border="1|1" id="products-table"> <tr> <th>Product ID</th> <th>Product Description</th> <th>Quantity</th> <th>Price</th> <th>Action</th> </tr> </table> <br /> <h2>Shopping Cart</h2> <table border="1|1" id="carts-table"> <tr> <th>Product ID</th> <th>Product Description</th> <th>Quantity</th> <th>Price</th> <th>Total Amount</th> <th>Action</th> </tr> </table> </body> <script src="script.js"> </script> </html> <script> //JS File const products = []; const carts = []; const inputs = { id: document.getElementById("productID"), desc: document.getElementById("product_desc"), qty: document.getElementById("quantity"), price: document.getElementById("price") }; const productsTable = document.getElementById("products-table"); const cartsTable = document.getElementById("carts-table"); function renderProductsTable() { // delete all entries Array.from(productsTable.children).slice(1).forEach(entry => productsTable.removeChild(entry)); for (product of products) { const tr = document.createElement('tr'); const id = document.createElement('td'); id.textContent = product.id; const desc = document.createElement('td'); desc.textContent = product.desc; const qty = document.createElement('td'); qty.textContent = product.qty; const price = document.createElement('td'); price.textContent = product.price; const action = document.createElement('td'); const deleteButton = document.createElement('button'); deleteButton.textContent = 'Delete'; deleteButton.addEventListener('click', () => removeProduct(product.id)) const addToCartButton = document.createElement('button'); addToCartButton.textContent = 'Add to cart'; addToCartButton.addEventListener('click', () => addCart(product.id)); action.appendChild(deleteButton); action.appendChild(addToCartButton); tr.appendChild(id); tr.appendChild(desc); tr.appendChild(qty); tr.appendChild(price); tr.appendChild(action); productsTable.appendChild(tr); console.log(products); } } function addProduct() { const product = { id: inputs.id.value, desc: inputs.desc.value, qty: Number(inputs.qty.value), price: Number(inputs.price.value) }; let existing = products.find(item => item.id === product.id); if (existing) { existing.qty += product.qty; } else { products.push(product); } renderProductsTable(); document.getElementById('order').reset(); } function removeProduct(product_id) { const index = products.findIndex(p => p.id === product_id); products.splice(index, 1); renderProductsTable(); } function addCart(product_id) { const product = products.find(p => p.id === product_id); const cartItem = carts.find(c => c.product === product); if(cartItem) { cartItem.qty += 1; } else { carts.push(product); } renderCartTable(); console.log(cartItem); } function renderCartTable() { for (cart of carts){ const tr = document.createElement('tr'); const id = document.createElement('td'); id.textContent = cart.id; const desc = document.createElement('td'); desc.textContent = cart.desc; const qty = document.createElement('td'); qty.textContent = cart.qty; const price = document.createElement('td'); price.textContent = cart.price; const total = document.createElement('td'); total.textContent = "Total Amount Should Calculate Here Automatically" const action = document.createElement('td'); const subtractButton = document.createElement('button'); subtractButton.textContent = 'Subtract Quantity'; const addButton = document.createElement('button'); addButton.textContent = 'Add Quantity'; const removeButton = document.createElement('button'); removeButton.textContent = 'Remove Item'; tr.appendChild(id); tr.appendChild(desc); tr.appendChild(qty); tr.appendChild(price); tr.appendChild(total); tr.appendChild(action); cartsTable.appendChild(tr); console.log(carts); } } </script>