-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
126 lines (121 loc) · 4.64 KB
/
main.js
File metadata and controls
126 lines (121 loc) · 4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// CART
let cartIcon = document.querySelector('#cart-icon');
let cart = document.querySelector('.cart');
let closeCart = document.querySelector('#close-cart');
//OPEN CART
cartIcon.onclick = () =>{
cart.classList.add("active");
};
//CLOSE CART
closeCart.onclick = () =>{
cart.classList.remove("active");
};
//CART WORKING JS
if (document.readyState == 'loading'){
document.addEventListener('DOMContentLoaded', ready)
}else{
ready();
}
//MAKING FUNCTION
function ready(){
//REMOVE ITEM FROM CART
var removeCartButtons = document.getElementsByClassName("cart-remove")
console.log(removeCartButtons);
for (var i = 0; i < removeCartButtons.length; i++) {
var button = removeCartButtons[i]
button.addEventListener("click", removeCartItem);
}
//QUANTITY CHANGES
var quantityInputs = document.getElementsByClassName("cart-quantity");
for (var i = 0; i < quantityInputs.length; i++){
var input = quantityInputs[i];
input.addEventListener("change", quantityChanged);
}
//ADD TO CART
var addCart = document.getElementsByClassName("add-cart")
for (var i = 0; i < addCart.length; i++) {
var button = addCart[i];
button.addEventListener("click", addCartClicked);
}
// BUY BUTTON FUNCTION
document.getElementsByClassName("btn-buy")[0]
.addEventListener("click", buyButtonClicked);
}
// BUY BUTTON
function buyButtonClicked(){
alert("Your order is placed, thank you for shopping with us!");
var cartContent = document.getElementsByClassName("cart-content")[0];
while (cartContent.hasChildNodes()){
cartContent.removeChild(cartContent.firstChild);
}
updatetotal();
}
function removeCartItem(event) {
var buttonClicked = event.target;
buttonClicked.parentElement.remove();
updatetotal();
}
// QUANTITY CHANGES
function quantityChanged(event) {
var input = event.target;
if (isNaN(input.value) || input.value <= 0) {
input.value = 1;
}
updatetotal();
}
//ADD TO CART
function addCartClicked(event) {
var button = event.target;
var shopProducts = button.parentElement;
var title = shopProducts.getElementsByClassName("product-title")[0].innerText;
var price = shopProducts.getElementsByClassName("price")[0].innerText;
var productImg = shopProducts.getElementsByClassName("product-img")[0].src;
addProductToCart(title, price, productImg);
updatetotal();
}
function addProductToCart(title, price, productImg) {
var cartShopBox = document.createElement("div");
cartShopBox.classList.add("cart-box");
var cartItems = document.getElementsByClassName("cart-content")[0];
var cartItemsNames = cartItems.getElementsByClassName("cart-product-title");
for (var i = 0; i < cartItemsNames.length; i++) {
if (cartItemsNames[i].innerText == title) {
alert("You have already added this item to cart");
return;
}
}
var cartBoxContent = `
<img src="${productImg}" alt="" class="cart-img">
<div class="detail-box">
<div class="cart-product-title">${title}</div>
<div class="cart-price">${price}</div>
<input type="number" value="1" class="cart-quantity">
</div>
<!-------------REMOVE CART--------------->
<i class='bx bxs-trash-alt cart-remove'></i>`;
cartShopBox.innerHTML = cartBoxContent;
cartItems.append(cartShopBox);
cartShopBox
.getElementsByClassName("cart-remove")[0]
.addEventListener("click", removeCartItem);
cartShopBox
.getElementsByClassName("cart-quantity")[0]
.addEventListener("change", quantityChanged);
}
// UPDATE TOTAL
function updatetotal(){
var cartContent = document.getElementsByClassName("cart-content")[0];
var cartBoxes = cartContent.getElementsByClassName("cart-box");
var total = 0;
for (var i = 0; i < cartBoxes.length; i++){
var cartBox = cartBoxes[i];
var priceElement = cartBox.getElementsByClassName("cart-price")[0];
var quantityElement = cartBox.getElementsByClassName("cart-quantity")[0];
var price = parseFloat(priceElement.innerText.replace("$", ""))
var quantity = quantityElement.value;
total = total + (price * quantity);
}
//IF PRICE CONTAIN SOME CENTS VALUE
total = Math.round(total * 100) / 100;
document.getElementsByClassName("total-price")[0].innerText = "$" + total;
}