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 = ` + + ${product.id} + ${product.name} + ${product.price} + 1 + + + `; + let tbody = document.querySelector('tbody'); + tbody.insertAdjacentHTML("beforeend", productRow); + } +} + diff --git a/style.css b/style.css new file mode 100644 index 0000000..77a5658 --- /dev/null +++ b/style.css @@ -0,0 +1,8 @@ +.bucketPanel{ + width: 400px; + padding: 1-px; +} + +.productRemoveBtn:hover{ + cursor: pointer; +} \ No newline at end of file diff --git a/task03.html b/task03.html new file mode 100644 index 0000000..738b3d4 --- /dev/null +++ b/task03.html @@ -0,0 +1,109 @@ + + + + + Document + + + + + +
+ + +
+ +
+
+
Товар 1
+ ... +
+ 120 + +
+ +
+
+
Товар 2
+ ... +
+ 75 + +
+ +
+
+
Товар 3
+ ... +
+ 3000 + +
+ +
+
+
+ + + + + + + + \ No newline at end of file