diff --git a/README.md b/README.md deleted file mode 100644 index 52258b5..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# JavaScript diff --git a/script.js b/script.js new file mode 100644 index 0000000..d57f93f --- /dev/null +++ b/script.js @@ -0,0 +1,100 @@ +let basketBtns = document.querySelectorAll('.toBasketBtn'); +basketBtns.forEach(function(btn){ + btn.addEventListener('click',function(event){ + let id = event.srcElement.dataset.id; + let price = event.srcElement.dataset.price; + let name = event.srcElement.dataset.name; + basket.addProduct({id: id, price: price, name: name}) + }) +}); + +let basket = { + products: {}, + + addProduct(product){ + this.addProductToObject(product); + this.renderProductInBasket(product); + this.renderTotalSum(); + this.addRemoveBtnsListeners(); + }, + + removeProductListener(event){ + basket.removeProduct(event); + basket.renderTotalSum(); + }, + + removeProduct(event){ + let id = event.srcElement.dataset.id; + this.removeProductFromObject(id); + this.removeProductFromBasket(id); + }, + + removeProductFromBasket(id){ + let countId = document.querySelector(`.productCount[data-id="${id}"]`); + if(countId.textContent == 1){ + countId.parentNode.remove(); + } else{ + countId.textContent--; + } + + }, + + removeProductFromObject(id){ + if(this.products[id].count == 1){ + delete this.products[id] + } else { + this.products[id].count--; + } + }, + + addRemoveBtnsListeners(){ + let btns = document.querySelectorAll('.productRemoveBtn'); + for(let i = 0; i < btns.length; i++){ + btns[i].addEventListener('click',this.removeProductListener); + } + }, + + renderTotalSum(){ + document.querySelector('.total').textContent = this.getTotalSum(); + }, + + getTotalSum(){ + let sum = 0; + for(let key in this.products){ + sum += this.products[key].price * this.products[key].count; + } + return sum; + }, + + addProductToObject(product){ + if(this.products[product.id] == undefined){ + this.products[product.id] = { + price: product.price, + name: product.name, + count: 1 + } + } else{ + this.products[product.id].count++; + } + }, + + renderProductInBasket(product){ + let productExist = document.querySelector(`.productCount[data-id="${product.id}"]`); + if(productExist){ + productExist.textContent++; + return; + } + let productRow = ` +