diff --git a/index.html b/index.html index 752a993..b01ddbe 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@

Root Cart

Action - + Root Rubber Duck @@ -33,9 +33,22 @@

Root Cart

+ + + Ducky Headphones + + $50.00 + + + + $0 + + + + - +

@@ -57,3 +70,8 @@

Total: $0

+ + + \ No newline at end of file diff --git a/js/index.js b/js/index.js index 75405d6..de4e5f4 100644 --- a/js/index.js +++ b/js/index.js @@ -1,42 +1,85 @@ // ITERATION 1 function updateSubtotal(product) { - console.log('Calculating subtotal, yey!'); - + const price = product.querySelector('.price span').innerText + const quantity = product.querySelector('.quantity input').value; + let subtotal = price*quantity + product.querySelector('.subtotal span').innerText = subtotal + return subtotal //... your code goes here } - +// ITERATION 2 & 3 function calculateAll() { - // code in the following two lines is added just for testing purposes. - // it runs when only iteration 1 is completed. at later point, it can be removed. - const singleProduct = document.querySelector('.product'); - updateSubtotal(singleProduct); - // end of test - - // ITERATION 2 - //... your code goes here + let totalElement = document.querySelector('#total-value span'); + let products = document.getElementsByClassName('product') + let totalProducts = 0; + for(const product of products){ + totalProducts += updateSubtotal(product); + } + totalElement.innerText = totalProducts - // ITERATION 3 - //... your code goes here } // ITERATION 4 function removeProduct(event) { - const target = event.currentTarget; - console.log('The target in remove is:', target); - //... your code goes here + const button = event.target; // + const row = button.closest('.product'); + if (row) { + row.remove(); + calculateAll(); + } } // ITERATION 5 function createProduct() { - //... your code goes here + let productName = document.querySelector( + '.create-product td input[placeholder="Product Name"]' + ).value; + + let unitPrice = document.querySelector( + '.create-product td input[placeholder="Product Price"]' + ).value; + + let products = document.querySelector('.products') + let product = document.createElement('tr') + product.className='product' + product.innerHTML += ` + + + + $ + + + + $0 + + + +`; +product.querySelector('.price span').textContent = unitPrice; +product.querySelector('.name span').textContent = productName +products.appendChild(product); + +//Clear inputs +document + .querySelectorAll('.create-product td input') + .forEach((input) => (input.value = '')); } window.addEventListener('load', () => { const calculatePricesBtn = document.getElementById('calculate'); calculatePricesBtn.addEventListener('click', calculateAll); - //... your code goes here + // Event delegation for remove buttons + document + .querySelector('.products') + .addEventListener('click', function (event) { + if (event.target.classList.contains('btn-remove')) { + removeProduct(event); + } + }); + const createProductBtn = document.getElementById('create'); + createProductBtn.addEventListener('click', createProduct); });